如何在ZK DataBinding中选择一个TEMPLATE?

时间:2013-03-11 05:23:17

标签: java mvvm binding zk

我的网格有四个模板,但我无法以任何方式通过事件更改网格模板(例如,通过单击超链接或按钮)。 如何在运行时从其他模板中选择一个模板?

<grid id="dataGrid"  model="@bind(vm.taskDTOs) @template('newTaskTemplate')" width="100%">
    <columns id="dataGridColumns" />
    <template name="newTaskTemplate" var="newTask">
        <row>
            <label value="" />
            <label value="@bind(newTask.documentDTO.docTypeDTO.title)"/>
            <label value="@bind(newTask.documentDTO.docNumber)"/>
            <label value="@bind(newTask.documentDTO.docDateTime)"/>
            <label value="@bind(newTask.assignerID)"/>
            <label value="@bind(newTask.assignDateTime)"/>
            <label value="@bind(newTask.assignDateTime)"/>
            <label value="@bind(newTask.documentDTO.docTypeStateDTO.stateActionDTO.actionDTO.title)"/>
        </row>
    </template>

    <!--if="${templateStatus.value=='pendingTask'}"-->

    <template name="pendingTaskTemplate" var="pendingTask">
        <row>
            <label value="@bind(pendingTask.documentDTO.docTypeDTO.title)"/>
            <label value="@bind(pendingTask.documentDTO.docNumber)"/>
            <label value="@bind(pendingTask.documentDTO.docDateTime)"/>
            <label value="@bind(pendingTask.assignerID)"/>
            <label value="@bind(pendingTask.assignDateTime)"/>
            <label value="@bind(pendingTask.assignDateTime)"/>
            <label value="@bind(pendingTask.documentDTO.docTypeStateDTO.stateActionDTO.actionDTO.title)"/>
        </row>
    </template>

    <!--if="${templateStatus.value=='refferedTask'}"-->
    <template name="refferedTaskTemplate" var="RefferedTask">
        <row>
            <label value="@bind(RefferedTask.documentDTO.docTypeDTO.title)"/>
            <label value="@bind(RefferedTask.documentDTO.docNumber)"/>
            <label value="@bind(RefferedTask.documentDTO.docDateTime)"/>
            <label value="@bind(RefferedTask.assigneeID)"/>
            <label value="@bind(RefferedTask.assignDateTime)"/>
            <label value="@bind(RefferedTask.assignDateTime)"/>
            <label value="@bind(RefferedTask.catalogDTO.catalogTypeDTO.title)"/>
        </row>
    </template>

    <!--if="${templateStatus.value == 'allTask'}"-->

    <template name="allTaskTemplate" var="allTask">
        <row>
            <label value="" />
            <label value="@bind(allTask.documentDTO.docTypeDTO.title)"/>
            <label value="@bind(allTask.documentDTO.docNumber)"/>
            <label value="@bind(allTask.documentDTO.docDateTime)"/>
            <label value="@bind(allTask.assignerID)"/>
            <label value="@bind(allTask.assigneeID)"/>
            <label value="@bind(allTask.assignDateTime)"/>
            <label value="@bind(allTask.assignDateTime)"/>
            <label value="@bind(allTask.assignDateTime)"/>
            <label value="@bind(allTask.assignDateTime)"/>
            <label value="@bind(allTask.documentDTO.docTypeStateDTO.stateActionDTO.actionDTO.title)"/>
            <label value="@bind(allTask.catalogDTO.catalogTypeDTO.title)"/>
        </row>
    </template>
</grid>

1 个答案:

答案 0 :(得分:1)

使用“动态模板”。请参阅 Children Binding, Combine with Dynamic Template

在您的情况下,您可以将模板名称存储为ViewModel的属性,并像@template(vm.templateName)一样绑定到它。

然后在运行时更改属性vm.templateName以切换网格模板。