2013-07-17 59 views
5

研究員開發人員 我有一個自定義列表頁面,用戶可以選擇幾條記錄,在操作窗格中點擊一個按鈕,該窗口運行類中的某些邏輯,所有工作正常。我的問題是光標不會停留在相同的記錄上,而是會移動到網格的頂部。聽起來像是一個熟悉的問題?當刷新列表頁面網格時光標移動到頂部

我使用args在具有所有邏輯的自定義類中存儲列表頁面的FormDataSource。

我嘗試了一些東西,但都沒有工作。

  1. formDataSource.research(真) 真正的參數應該研究它的工作後保留位置。我猜這應該是最直接的解決方案。列表頁面查詢有2個數據源使用外連接加入,我的猜測是研究(真)僅適用於內連接。

  2. formDatasource.setPosition(位置)

    INT位置;
    position = formDatasource.getPosition();

    formDatasource.research();

    formDatasource.setPosition(position);

    我使用getPosition存儲位置並使用setPosition重新設置它。沒用。

  3. formDataSource.findRecord()

    currentRecord = formDatasource.cursor();

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

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

    我使用ds.cursor()獲取當前記錄並在research()後將其傳遞給findRecord()。沒用。

  4. formDataSource.findValue()

    currentRecord = formDatasource.cursor();

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

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

    我使用ds.cursor()獲取當前記錄並recId並將其傳遞給research()後的findValue()。沒用。

我調試了上面的代碼,並且cursor()方法獲取當前記錄和它的recId。 我開始相信這可能是列表頁面的限制,並祈禱有人證明我錯了。

任何幫助表示讚賞。

+0

你也可以嘗試使用任務宏並調用#taskF5刷新表單。這與點擊列表頁面上的刷新按鈕相同。你可以參考http://msdn.microsoft.com/en-us/library/hh812104.aspx瞭解更多細節。 –

+0

'research'有一個可選的布爾參數來保留網格中的位置。要獲得出色的概述,請參閱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); 

這對我的作品。

相關問題