我目前遇到以下情况的问题:
我有一个右键单击事件,它执行一个静态方法“inventTransferOrder”。我有以下代码:
select firstOnly invTransLine
where invTransLine.TransferId == invTrans.TransferId
&& invTransLine.LineNum == invTransLineNum;
args.record(invTransLine);
new MenuFunction(menuitemDisplayStr(InventTransferOrder), MenuItemType::Display).run(args);
在表单中( InventTransferOrders ,它位于菜单项InventTransferOrder后面)init方法我正在执行以下代码:
InventTransferLine invTransLine;
QueryBuildDataSource qbds;
QueryBuildRange qbr;
;
invTransLine = element.args().record();
qbds = InventTransferLine_Q.dataSourceTable(tableNum(InventTransferLine));
qbr = qbds.addRange(fieldNum(InventTransferLine, LineNum));
qbr.value(strFmt('%1', invTransLine.LineNum));
这正是完全它应该做的事情:它使用数据源'InventTransferLine'过滤网格到匹配LineNum的一条记录。
与此相反,我需要显示所有记录(InventTransferLine被预过滤以仅显示所选的InventTransfer记录的行)但是一条记录与匹配LineNum应突出显示,以便用户可以立即开始使用该行。
有人可以帮我解决这个问题吗?
我使用了以下代码,但它(视觉上)没有做任何事情:
InventTransferLine_DS.findRecord(invTransLine);
InventTransferLine_DS.mark(true);
我很感激任何帮助。
非常感谢和亲切的问候
答案 0 :(得分:2)
这是一个时间问题。覆盖executeQuery
数据源的InventTransferLine
方法并在其中放置断点。还在您编写修改的init
方法中放置了一个断点。您将看到init
中的断点首先被击中,然后是executeQuery
中的断点。这意味着executeQuery
会删除您之前完成的所有选择和标记。
如果您在executeQuery
来电后使用super()
方法进行修改,则您的选择和标记应保留。当然,每次调用executeQuery
时都不希望执行此修改,因此您必须添加一些额外的逻辑。