2013-07-17 14 views
5

Diğer geliştiriciler, Kullanıcıların birkaç kaydı seçebileceği özel bir liste sayfam var, bir sınıfta bazı mantığı çalıştıran Eylem bölmesinde bir düğmeye bas ve tüm bunlar iyi çalışıyor . Benim sorunum, imlecin aynı kayıtta kalmaması, ancak ızgaranın üstüne gider. Tanıdık bir konu gibi görünüyor?İmleç liste sayfası ızgarasını yenilerken en üste gider

Liste sayfasının FormDataSource'unu, tüm mantığa sahip özel sınıftaki hatalar kullanarak depolarım.

Birkaç şey denedim ama hiçbiri işe yaramadı.

  1. formDataSource.research (doğru) Gerçek parametre araştırma işini yapar sonra konumunu korumak gerekiyordu. Bunun en basit çözüm olması gerektiğini tahmin ediyorum. Liste sayfası sorgusu, dış birleştirme ile birleştirilen 2 veri kaynağına sahiptir ve benim tahminim araştırmadır (doğru) sadece İç birleştirmelerle çalışır.

  2. formDatasource.setPosition (konum)

    int konumu;
    position = formDatasource.getPosition();

    formDatasource.research();

    formDatasource.setPosition (position);

    Pozisyonu getPosition kullanarak kaydediyorum ve setPosition kullanarak tekrar ayarlıyorum. Kullanım yok.

  3. formDataSource.findRecord()

    currentRecord = formDatasource.cursor() ;

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

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

    Geçerli kaydı almak ve araştırma() öğesinden sonra findRecord() öğesine iletmek için ds.cursor() yöntemini kullanıyorum. Kullanım yok.

  4. formDataSource.findValue()

    currentRecord = formDatasource.cursor() ;

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

    formDatasource.research();
    formDatasource.findValue (fieldNum (Tablo, RecId), int642str (recId));

    Geçerli kaydı almak ve recId için ds.cursor() yöntemini kullanın ve research() öğesinden sonra findValue() öğesine iletin. Kullanım yok.

Yukarıdaki kodu hata ayıkladım ve imleç() yöntemi geçerli kayıt ve recId değerini alıyor. Liste sayfasının bir sınırlaması olabileceğine ve birinin yanlış olduğunu kanıtladığına inanmaya başladım.

Herhangi bir yardım için teşekkür ederiz.

+0

Ayrıca, görev makrosunu kullanarak deneyebilir ve formu yenilemek için # taskF5 numaralı telefonu arayabilirsin. Bu, liste sayfalarındaki yenileme düğmesine tıklamakla aynı sonuca ulaşır. Daha fazla bilgi için http://msdn.microsoft.com/en-us/library/hh812104.aspx adresine başvurabilirsiniz. –

+0

'araştırma', ızgaradaki konumu korumak için isteğe bağlı bir boole parametresine sahiptir. Mükemmel bir genel bakış için bkz. Http://kashperuk.blogspot.com.es/2010/03/tutorial-reread-refresh-research.html –

cevap

2

Yöntem 3'ü kullanın, ancak bunun gibi.

YourTable tmpTable; 


currentRecord = formDatasource.cursor(); 

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

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

Bu yardımcı olur umarım.

+0

// sadece tmpTable-Buffer: JUW_tmpCostCalculation positionDummy öğesinin recId'sini ayarlayın; ; positionDummy.recId = JUW_tmpCostCalculation.recid; JUW_tmpCostCalculation_DS.research(); JUW_tmpCostCalculation_DS.findRecord (positionDummy); –

0

Araştırma yöntemi için "true" parametresini parametre olarak geçirmeyi deneyin. salesLine_ds.research (true) benim durumumda çalışır, yani çizgiyi araştırırsam, imleç aynı satırda kalır.

0

Bana uyar bu

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

formDatasource.setPosition(position); 

gibi ikinci yöntemini kullanın.

İlgili konular