【发布时间】:2015-07-06 23:13:46
【问题描述】:
我的表单上的 TabPage 中有一个复选框,如果我选择该复选框,则该值将保存在表字段中(存在于我的 FormDataSource:ParametersTable 中)。
我想在进入 TabPage 时刷新表单,就像按 F5 一样。
有可能吗?
【问题讨论】:
标签: forms refresh axapta x++ dynamics-ax-2012
我的表单上的 TabPage 中有一个复选框,如果我选择该复选框,则该值将保存在表字段中(存在于我的 FormDataSource:ParametersTable 中)。
我想在进入 TabPage 时刷新表单,就像按 F5 一样。
有可能吗?
【问题讨论】:
标签: forms refresh axapta x++ dynamics-ax-2012
有一篇很棒的文章,介绍了刷新表单数据的不同方法here。以下是基本大纲:
这个方法基本上用表单缓存中存储的任何数据来刷新表单控件中显示的数据,用于该特定数据源记录。调用 refresh() 方法将不从数据库中重新读取记录。所以如果另一个进程中的记录发生了变化,执行refresh()后就不会显示这些了。
调用reread() 将查询数据库并将当前记录内容重新读取到数据源表单缓存中。这将不会在表单上显示更改,直到重新绘制网格内容(例如,当您离开该行或重新打开表单时)。
如果您通过代码添加或删除了记录,则不应使用它来刷新表单数据。
调用research() 将针对数据库重新运行现有的表单查询,因此使用新的/删除的记录更新列表以及更新所有现有的行。这将遵循用户设置的任何现有过滤器和表单上的排序。
调用executeQuery() 还将重新运行查询并更新/添加/删除网格中的行。 ExecuteQuery 如果您在代码中修改了查询,并且需要刷新表单以根据更新后的查询显示数据,则应使用。
我强烈建议您阅读这篇文章。尝试使用上面的一些方法或它们的一些组合。
从research() 方法开始,它可能会解决你的问题:
formDataSource.research();
【讨论】: