Share via


将标记的预警改为已读(或未读)更新错误

最近我们碰到一个问题:当用户在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()));
}

 

原文地址:

https://blogs.msdn.com/b/emeadaxsupport/archive/2011/08/30/ax-2012-setting-marked-alerts-to-read-or-unread-the-unread-column-doesn-t-get-updated-properly.aspx