我想仅显示选定树节点的复选框,但我为树中的每个元素获取单选按钮

问题描述 投票:0回答:2

这是我的代码

<?page title="MVVM Tree POC"?>
<zk>
    <borderlayout height="800px">
        <west size="25%"></west>
        <center>
            <window apply="org.zkoss.bind.BindComposer"
                viewModel="@id('vm') @init('com.nagarro.controller.TreeController')"
                title="Dynamic Tree" border="normal">
                <tree multiple="true" checkmark="true" rows="5"
                    model="@bind(vm.employeeTreeModel)">
                    <treecols>
                        <treecol label="First Name" align="center" />
                        <treecol label="Last Name" align="center" />
                        <treecol label="Age" align="center" />
                        <treecol label="Index" align="center" />
                    </treecols>
                    <template name="model" var="node" status="s">
                        <treeitem checkable="true">
                            <treerow style="text-align:center;">
                                <treecell
                                    label="@bind(node.data.firstName)" style="text-align:left;" />
                                <treecell
                                    label="@bind(node.data.lastName)" />
                                <treecell label="@bind(node.data.age)" />
                                <treecell label="@bind(s.index)" />
                            </treerow>

                        </treeitem>
                    </template>
                </tree>

            </window>
        </center>
    </borderlayout>
</zk>

我检查了 zkoss reference 的多重选择属性,并在上面的 zul 文件中进行了必要的更改。它仍然不显示复选框。相反,它仅显示单选按钮。

另外,我想在某些选定的树节点前面显示复选框,而不是全部。

java tree xul zk
2个回答
3
投票

使用

setMultiple(true)

vm.employeeTreeModel
返回的模型实例上,而不是它本身的树上。

如果您只想检查某些内容,请更改此

<treeitem checkable="true">

类似的事情

<treeitem checkable="@load(node.checkable)">

0
投票

在@Nabil A.回答的帮助下,我发现如果你使用TreeitemRenderer,你需要像这样设置倍数:

public class MyItemRenderer implements TreeitemRenderer<DefaultTreeNode<MyObj>> {
    public void render(final Treeitem item, DefaultTreeNode<MyObj> data, int index) {
        data.getModel().setMultiple(true);
        //rest of the code...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.