2013-07-17 7 views
5

फेलो डेवलपर्स, मेरे पास एक कस्टम सूची पृष्ठ है, जहां कोई उपयोगकर्ता कुछ रिकॉर्ड चुन सकता है, एक्शन फलक में एक बटन दबा सकता है जो कक्षा में कुछ तर्क चलाता है, और जो ठीक काम करता है । मेरी समस्या यह है कि कर्सर एक ही रिकॉर्ड में नहीं रहता है लेकिन ग्रिड के शीर्ष पर जाता है। एक परिचित मुद्दे की तरह लगता है?रीफ्रेशिंग सूची पृष्ठ ग्रिड

मैं सभी तर्क है कि कस्टम कक्षा में आर्ग का उपयोग कर सूची पृष्ठ के FormDataSource की दुकान।

मैं कुछ बातें करने की कोशिश की, लेकिन कोई भी काम किया।

  1. formDataSource.research (सही) सच पैरामीटर अनुसंधान के बाद अपने काम करता है स्थिति बनाए रखने के लिए माना जाता है। मुझे लगता है कि यह सबसे सरल समाधान होना चाहिए था। सूची पृष्ठ क्वेरी में 2 डेटा स्रोत शामिल हैं जो बाहरी शामिल होते हैं और मेरा अनुमान है कि शोध (सत्य) केवल इनर जॉइन के साथ काम करता है।

  2. formDatasource.setPosition (स्थिति)

    पूर्णांक स्थिति;
    स्थिति = formDatasource.getPosition();

    formDatasource.research();

    formDatasource.setPosition (स्थिति);

    मैं getPosition का उपयोग कर स्थिति की दुकान और setPosition का उपयोग कर इसे फिर से निर्धारित किया है। किसी काम का नहीं।

  3. formDataSource.findRecord()

    currentRecord = formDatasource.cursor();

    recId = currentRecord.RecId;
    formDatasource.reread();

    formDatasource.research();
    formDatasource.findRecord (currentRecord);

    मैं वर्तमान रिकॉर्ड प्राप्त करने के लिए ds.cursor() का उपयोग करता हूं और अनुसंधान() के बाद इसे खोजने के लिए पास करता हूं। किसी काम का नहीं।

  4. formDataSource.findValue()

    currentRecord = formDatasource.cursor();

    recId = currentRecord.RecId;
    formDatasource.reread();

    formDatasource.research();
    formDatasource.findValue (फ़ील्डनम (तालिका, रिकिड), int642str (recId));

    मैं ds.cursor() मौजूदा रिकॉर्ड और recId हो और findValue() के लिए यह अनुसंधान के बाद पारित करने के लिए() का उपयोग करें। किसी काम का नहीं।

मैंने उपरोक्त कोड डीबग किया और कर्सर() विधि को वर्तमान रिकॉर्ड और इसकी रिकॉइड मिलती है। मैंने विश्वास करना शुरू कर दिया है कि यह सूची पृष्ठ की सीमा हो सकती है, और प्रार्थना कर रही है कि कोई मुझे गलत साबित कर दे।

किसी भी मदद की सराहना की है।

+0

क्या आप कार्य मैक्रो का उपयोग करके भी कोशिश कर सकते हैं और फॉर्म को रीफ्रेश करने के लिए # taskF5 पर कॉल कर सकते हैं। यह सूची पृष्ठों पर रीफ्रेश बटन पर क्लिक करने के समान ही परिणाम देता है। अधिक जानकारी के लिए आप http://msdn.microsoft.com/en-us/library/hh812104.aspx का संदर्भ ले सकते हैं। –

+0

'शोध' में ग्रिड में स्थिति को बनाए रखने के लिए एक वैकल्पिक बूलियन पैरामीटर है। एक उत्कृष्ट अवलोकन के लिए http://kashperuk.blogspot.com.es/2010/03/tutorial-reread-refresh-research.html –

उत्तर

2

विधि 3 का उपयोग करें, लेकिन इस तरह।

YourTable tmpTable; 


currentRecord = formDatasource.cursor(); 

recId = currentRecord.RecId; 
tmpTable = TmpTable::findByRecId(recId); 
formDatasource.reread(); 

formDatasource.research(); 
formDatasource.findRecord(tmpTable); 

उम्मीद है कि इससे मदद मिलती है।

+0

// बस tmpTable-Buffer का recId सेट करें: JUW_tmpCostCalculation positionDummy; ; positionDummy.recId = JUW_tmpCostCalculation.recid; JUW_tmpCostCalculation_DS.research(); JUW_tmpCostCalculation_DS.findRecord (positionDummy); –

0

अनुसंधान विधि के लिए पैरामीटर के रूप में "सत्य" को पारित करने का प्रयास करें। salesLine_ds.research (true) मेरे मामले में काम करता है, यानी यदि मैं लाइन का शोध करता हूं, तो कर्सर एक ही पंक्ति पर रहता है।

0

इस

int position; 
position = formDatasource.getPosition(); 
//Make your update operations here 
formDatasource.research(true); 

formDatasource.setPosition(position); 

यह मेरे लिए काम करता है की तरह दूसरी विधि का उपयोग करें।

संबंधित मुद्दे