我试图隐藏/显示网格中的一行(在Java代码中动态填充),点击它的上一行。模拟一个简单的MasterDetail组件。我在java代码中获得了单击行的正确索引,但是更改行的可见性不起作用!任何人都可以帮助我,或者有类似的方法吗?
谢谢, Pooya
以下是ZUL的代码:
<?xml version="1.0" encoding="UTF-8"?>
<zk xmlns="http://www.zkoss.org/2005/zul">
<window id="callbackLogWindow"
apply="CallbackLogWindowComposer"
border="none" height="100%" width="100%"
xmlns:w="http://www.zkoss.org/2005/zk/client">
<grid id="callbackLogGrid" oddRowSclass="non-odd" height="100%">
<columns>
<column label="Logging Name" />
<column label="Status" />
<column label="DateTime" />
<column label="Subject" />
<column label="Replies" />
</columns>
<rows>
<zk forEach="${callbackLogWindow$composer.callbacks}">
<row sclass='${forEachStatus.index % 2 != 0 ? "z-grid-odd" : ""}'
onClick="callbackLogWindow$composer.toggleRow(self.index)">
<custom-attributes callback="${each}"/>
<cell><label value="${callback.loggingName}" /></cell>
<cell><label value="${callback.resolved}" /></cell>
<cell><label value="${callback.callbackTime}" /></cell>
<cell><label value="${callback.subject}" /></cell>
<cell><label value="${callback.resolvedItemCount}" /></cell>
</row>
<row sclass='${forEachStatus.index % 2 != 0 ? "z-grid-odd" : ""}'>
<cell colspan="5">
<include src="callbackItem.zul" callback="${each}"/>
</cell>
</row>
<row>
<custom-attributes callback="${each}"/>
<button onClick="callbackLogWindow$composer.saveCallbackItems(callback)">
Save
</button>
</row>
</zk>
</rows>
</grid>
</window>
</zk>
控制器:
public class CallbackLogWindowComposer extends SelectorComposer<Window> {
@Inject private CallbackDao callbackDao;
@Wire Grid callbackLogGrid;
private List<Callback> callbacks = new ArrayList<Callback>();
@Override
public void doAfterCompose(Window window) throws Exception {
super.doAfterCompose(window);
}
public List<Callback> getCallbacks() {
callbacks = callbackDao.findAll();
return callbacks;
}
public void toggleRow(int i) {
Component row = callbackLogGrid.getRows().getChildren().get(i+1);
row.setVisible(row.isVisible());
callbackLogGrid.renderAll();
}
public void saveCallbackItems(Callback cb) {
callbackDao.saveInTransaction(cb);
}
}
答案 0 :(得分:2)
我不确定并且没有测试,但我可以向你提出一件事Zk有visible="true/false"
属性你可以在每一行中应用这个属性并将它与你的databean变量绑定更多细节我可以建议让我们假设你有List<A> list
并且list
包含您要显示的所有记录,现在在类display
中添加另一个变量,例如A
,并由您自己控制。onClick
对任何行更改更新列表中的任何其他项目。
答案 1 :(得分:0)
我遇到同样的问题,我找到的解决方案是:
行可见=&#34;&#34;
<grid model="@bind(vm.total)" vflex="1" emptyMessage="No records exist" width="315px" >
<columns>
<column width="45%"/>
<column width="25%" />
</columns>
<template name="model">
<row visible="@load(each.visible)">
<checkbox label="@load(each.label)" style="font-weight:bold" if="${each.checkbox}"/>
<label value="@load(each.label)" style="font-weight:bold" unless="${each.checkbox}"/>
<doublebox value="@bind(each.value)" sclass="textBoxNumber" locale="us" readonly="true" />
</row>
</template>
</grid>
</groupbox>