如何在ZK关闭窗口?

时间:2013-02-05 09:41:32

标签: java zk

如何在点击取消按钮时不使用窗口ID关闭ZK中的窗口?

zul文件的一些代码

<window apply="org.zkoss.bind.BindComposer" width="700px"
        height="500px" title="ReDefault Folder" mode="modal" border="normal"
        closable="true"
        viewModel="@id('vm') @init('web.viewmodel.FolderRedefaultViewModel')" visible="@load(vm.showDialog)">

<x:table border="0" align="right">
                <x:tr>

                    <x:td align="right" width="20px">

                        <button label="OK" width="80px"
                            onClick="@command('insertDefaultOnOk')">
                        </button>
                    </x:td>
                    <x:td align="left">

                        <button label="Cancle" width="80px"
                            onClick="@command('nOk')">
                        </button>
                    </x:td>
                </x:tr>
            </x:table>
    </window>

单击此按钮我想关闭窗口

2 个答案:

答案 0 :(得分:6)

你可以试试这个:
1.给你的窗口一个id:<window id="mywin"...
2.将onClick添加到您的按钮:<button onClick="mywin.detach()"...

或者,如果您想从您的命令处理程序执行此操作,请将窗口作为参数传递:
1. <window id="mywin"...
2. <button onClick="@command('test', cmp=mywin)"
3。

@Command
public void test(@BindingParam("cmp")  Window x) {
    x.detach();
}

未分配ID
只需在ZUL中使用getParent().getParent().getParent().getParent()而不是mywin。这将得到:

  • 按钮的父级:td
  • td的父母:tr
  • tr的父母table
  • 表的父级:window

答案 1 :(得分:0)

基本上可以通过写在

内来完成
<window apply="org.zkoss.bind.BindComposer" width="700px"
        height="500px" title="ReDefault Folder" mode="modal" border="normal"
        closable="true"
        viewModel="@id('vm') @init('web.viewmodel.FolderRedefaultViewModel')" visible="@load(vm.showDialog)"> 

这样:

<window apply="org.zkoss.bind.BindComposer" width="700px"
        height="500px" title="ReDefault Folder" mode="modal" border="normal"
        closable="true"
        viewModel="@id('vm') @init('web.viewmodel.FolderRedefaultViewModel')" visible="@load(vm.showDialog)" onCancel="self.detach();"> 

简单来说,只需在窗口

中添加onCancel="self.detach();"即可