刷新列表页面网格时,光标移动到顶部

时间:2013-07-17 09:26:23

标签: axapta dynamics-ax-2012

研究员, 我有一个自定义列表页面,用户可以选择几个记录,在操作窗格中点击按钮,在一个类中运行一些逻辑,一切正常。我的问题是光标不会停留在同一记录中,而是转到网格的顶部。听起来像一个熟悉的问题?

我使用具有所有逻辑的自定义类中的args存储列表页面的FormDataSource。

我尝试了很少的东西,但都没有用。

  1. formDataSource.research(真) 真正的参数应该在研究完成其工作后保留位置。我猜这应该是最直接的解决方案。列表页面查询有两个使用外连接加入的数据源,我的猜测是研究(true)仅适用于内连接。

  2. formDatasource.setPosition(位置)

    int position;
    position = 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()获取当前记录,并在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()。没用。

  5. 我调试了上面的代码,而cursor()方法确实得到了当前记录及其recId。 我开始相信它可能是列表页面的限制,并祈祷有人证明我错了。

    感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

使用方法3但是像这样。

YourTable tmpTable;


currentRecord = formDatasource.cursor();

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

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

希望这有帮助。

答案 1 :(得分:0)

尝试将“true”作为研究方法的参数传递。 salesLine_ds.research(true)适用于我的情况,即如果我研究该行,则光标停留在同一行。

答案 2 :(得分:0)

使用像这样的第二种方法

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

formDatasource.setPosition(position);

它对我有用。