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

Axapta 刷新列表页面网格时,光标移到顶部,axapta,dynamics-ax-2012,Axapta,Dynamics Ax 2012,各位发展商:, 我有一个自定义列表页面,用户可以在其中选择几个记录,点击操作窗格中的按钮,在类中运行一些逻辑,所有这些都可以正常工作。我的问题是光标不会停留在同一条记录上,而是会移动到网格的顶部。听起来是个熟悉的问题 我使用参数将列表页的FormDataSource存储在具有所有逻辑的自定义类中 我尝试了几件事,但都没有成功 formDataSource.research(true) 真参数应该在研究完成其工作后保留该位置。我猜这应该是最直接的解决办法。列表页查询有两个数据源使用外部连接连接,我

各位发展商:, 我有一个自定义列表页面,用户可以在其中选择几个记录,点击操作窗格中的按钮,在类中运行一些逻辑,所有这些都可以正常工作。我的问题是光标不会停留在同一条记录上,而是会移动到网格的顶部。听起来是个熟悉的问题

我使用参数将列表页的FormDataSource存储在具有所有逻辑的自定义类中

我尝试了几件事,但都没有成功

  • formDataSource.research(true) 真参数应该在研究完成其工作后保留该位置。我猜这应该是最直接的解决办法。列表页查询有两个数据源使用外部连接连接,我猜research(true)只适用于内部连接

  • formDatasource.setPosition(位置)

    内部位置
    position=formDatasource.getPosition()

    formDatasource.research()

    formDatasource.setPosition(位置)

    我使用getPosition存储位置,并使用setPosition再次设置它。没用

  • formDataSource.findRecord()

    currentRecord=formDatasource.cursor()

    recId=currentRecord.recId
    formDatasource.reread()

    formDatasource.research()
    formDatasource.findRecord(currentRecord)

    我使用ds.cursor()获取当前记录,并在research()之后将其传递给findRecord()。没用

  • formDataSource.findValue()

    currentRecord=formDatasource.cursor()

    recId=currentRecord.recId
    formDatasource.reread()

    formDatasource.research()
    findValue(fieldNum(表,RecId),int642str(RecId))

    我使用ds.cursor()获取当前记录和recId,并在research()之后将其传递给findValue()。没用

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


    感谢您的帮助。

    请使用方法3,但要像这样

    YourTable tmpTable;
    
    
    currentRecord = formDatasource.cursor();
    
    recId = currentRecord.RecId;
    tmpTable = TmpTable::findByRecId(recId);
     formDatasource.reread();
    
    formDatasource.research();
    formDatasource.findRecord(tmpTable); 
    
    希望这有帮助。

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

    使用第二种方法,如下所示

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

    这对我很有用。

    您也可以尝试使用task宏并调用#taskF5刷新表单。这与单击列表页面上的刷新按钮的结果相同。有关更多详细信息,请参阅。'research'有一个可选的布尔参数,用于保留网格中的位置。有关出色的概述,请参见//只需设置tmpTable缓冲区的recId:juwu tmpcostcluation positionDummy;positionDummy.recId=JUW_tmpCostCalculation.recId;JUW_tmpCostCalculation_DS.research();JUW_tmpCostCalculation_DS.findRecord(位置虚拟);