<grid vflex="1" model="@bind(vm.getModel())">
<columns menupopup="auto">
<column label="Name" sort="auto(name)" />
<column label="Type" sort="auto(type)" />
</columns>
<rows>
<row>
<button label="Left" /> // This do not render
<label value="Right" /> // This do not render
</row>
<template name="model">
<row>
<label value="@bind(each.name)" />
<label value="@bind(each.type)" />
</row>
</template>
</rows>
</grid>
我grid
有两列。
第一行是静态的,其余的是使用template
呈现的。
生成的网格不会渲染静态行...它将模板化的行渲染得很好..
为什么Zk没有渲染静态行?
答案 0 :(得分:1)
我以前遇到过这样的问题。问题的核心是ZK提供了两种设置grid
内容的方法,这适用于listbox
,tree
等。
一种方法是在ZUL中手动将row
组件添加到grid
,就像在此处一样,或者用myGrid.getRows().getChildren().add(myRow);
之类的Java手动添加grid
。
设置row
内容的另一种方法是使用ZK的模型概念。
不幸的是,正如您所发现的,这两个概念是相互排斥的 - 它们无法组合。当您考虑模型的工作原理时,这是有道理的。如果您要向模型添加新对象,它将在grid
中显示为新的row
。同样,如果您要从模型中删除对象,则相应的grid
将从grid
中消失。因此,{{1}}用于呈现模型中所有对象的实时视图。您在ZUL中硬编码的行不是由模型中的对象表示的,因此不会呈现。
我为你看到两个好的解决方案,第一个是合并这两个概念:为什么你需要这个静态行?它不能表示为模型中的对象吗?如果没有,第二个解决方案是重新考虑你正在做什么。我怀疑这一行不属于网格,你可以获得更好的UI和UX体验,将其移出网格。如果您有特定的用户体验方案,那么您需要提供反馈意见,ux.stackexchange.com网站就是您的最佳选择。