将标记的预警改为已读(或未读)更新错误
最近我们碰到一个问题:当用户在AX2012中管理他的预警,将数条预警同时改为“已读”时,预警通知的界面并没有相应地更新。
问题描述:
用户在AX 客户端的状态栏中点击预警铃,打开预警通知窗体。在窗体中有几条相同的预警,他想把它们同时标记为“已读”。在窗体中他选择这些记录,并在行动栏点击“更改状态”/“到已读”按钮,截图如下:
尽管未读预警的数字在窗体的预警钟和AX客户端的状态栏中成功更新,在当前窗体中只有第一行的预警钟在未读列中消失。
解决方案: 尽管使用“刷新”按钮可以更新屏幕,该问题可以通过用research()方法替代reread()方法来解决。代码位于“EventAlertInbox”窗体下的“ markAlerts“方法,具体如下:
void markAlerts(boolean isRead)
{
EventInbox inbox;
EventInbox tmpInbox;
;
for (tmpInbox = getFirstSelection(eventInbox_DS);
tmpInbox;
tmpInbox=eventInbox_DS.getNext())
{
ttsbegin;
inbox = EventInbox::find(tmpInbox.InboxId,true);
inbox.IsRead = isRead;
inbox.update();
tmpInbox.reread();
ttscommit;
}
// eventInbox_DS.reread();
eventInbox_DS.research();
alertList.arrange();
infolog.setNumUnreadAlerts(EventInbox::numberOfUnreadAlerts(curuserid()));
}
原文地址: