首页 > 解决方案 > Maximo 对话框:取消/对话框取消时不会重置值

问题描述

我在 Maximo 应用程序中创建了一个自定义操作,该操作会打开一个对话框,用户可以在其中勾选复选框以选择是否在应用程序视图中显示选项卡。

如果在对话框中选中了复选框,则属性的值设置为 1 并显示选项卡。取消选择时,该值重置为 0,并且选项卡被隐藏。

取消按钮会在我的自定义对话框中触发“dialogcancel”mxevent,但是当我选择一个复选框然后单击取消按钮时,该值不会重置为 0,并且会显示应该隐藏的选项卡。

这是我的 xml 示例:

<dialog datasrc="MAINRECORD" id="showrbean" label="Display tabs" savemode="ONLOADUNLOAD">
   <checkbox dataattribute="SHOWTAB_1" id="id_checkbox_SHOWTAB_1" label="Tab 1"/>
   <checkbox dataattribute="SHOWTAB_2" id="id_checkbox_SHOWTAB_2" label="Tab 2"/>
   <buttongroup id="showtabs_bookmarks_2">
      <pushbutton default="true" id="showtabs_1" label="Update" mxevent="updateTabs"/>
      <pushbutton default="true" id="showtabs_2" label="Cancel" mxevent="dialogcancel"/>
   </buttongroup>
</dialog>

dialogcancel 事件似乎不起作用,如何在 cancel 上重置我的值?

谢谢

标签: dialogmaximocancel-button

解决方案


在另一个完美运行的论坛上收到了这个答案:

啊好的,所以你所做的实际上是将显示属性添加到应用程序正在查看的同一记录中。

因此,即使它在对话框中,您正在编辑与屏幕上相同的记录,这就像在不加载对话框的情况下取消选中一个框,因此您可以退出记录,它会要求您保存更改,您可以单击否,它将重置。

如果您希望对话框具有取消选项,您有两个选项。#1 可能是最好的一个。

1 - 创建一个存储 appname、tabname、display 的新对象,并让您的对话框使用基于 appname 的关系查看该对象。如果您这样做,除非您单击 dialogok,否则它不会保存它,因此您的更改不会在 dialogcancel 上持续存在。然后您也可以在许多应用程序上使用它,您只需要在查看新对象的选项卡上添加关系和条件。

2 - 而不是调用 dialogcancel,而是从该操作调用您自己的自动化脚本,将值设置为其以前的值,如果您使用自动脚本变量 showtab1 = showtab1_previous 或者您不想这样做,您可以使用内置的 _previous 后缀来执行此操作使用可以通过 mbo.setValue("SHOWTAB_1", mbo.getDatabaseValue("SHOWTAB_1")) 获取的变量。一旦你设置了值,你就可以调用 service.closeDialog() 虽然这取决于你的 maximo 版本,我认为 7.6.0.8 及更高版本可能

我在 AppBean 类中尝试了选项 2:

public int customDialogCancel() throws RemoteException, MXException {

        MboRemote currMbo = this.getMbo();

        currMbo.setValue("SHOWTAB_1", currMbo.getDatabaseValue("SHOWTAB_1").toString());
        currMbo.setValue("SHOWTAB_2", currMbo.getDatabaseValue("SHOWTAB_2").toString());

        this.clientSession.queueEvent(new WebClientEvent("dialogclose", this.app.getCurrentPageId(), null, this.clientSession));
        return EVENT_HANDLED;
    }

推荐阅读