Maximo对话框:取消/对话框取消时不会重置值

时间:2020-06-04 10:30:45

标签: dialog maximo cancel-button

我在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事件似乎不起作用,如何在取消时重置我的值?

谢谢

1 个答案:

答案 0 :(得分:2)

在另一个效果很好的论坛上收到了此答案:

嗯,好的,实际上您已经添加了显示属性 记录与应用程序查看的记录相同。

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

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

1-创建一个新对象,该对象存储应用程序名称,选项卡名称,显示内容和 让您的对话框使用基于 应用名称。如果您这样做,那么除非您单击,否则它将不会保存它 dialogok,因此您的更改不会在dialogcancel上保留。你也可以 然后在很多应用上使用它,您只需要添加 查看新对象的选项卡上的关系和条件。

2-而不是调用dialogcancel,而是调用自己的自动化脚本 通过将该值设置为其先前值的操作,您可以 如果使用自动脚本,可以使用内置的_previous后缀来完成此操作 变量showtab1 = showtab1_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;
    }
相关问题