【发布时间】:2015-09-01 07:04:28
【问题描述】:
我使用 wicket ListViews 创建了一个表格来创建列和行,代码如下所示:
ErhebungMatrixPanel.java
public ErhebungMatrixPanel(String id) {
super(id);
this.add(matrixForm);
matrixForm.add(new ListView<Zustaendigkeit>("columns", zustaendigkeiten){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Zustaendigkeit> item) {
final int index = item.getIndex();
item.add(new Label("zustLabel", zustaendigkeiten.get(index).getName().toString()));
}
});
matrixForm.add(rows = new ListView<Erhebung>("rows", erhebungen){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Erhebung> item) {
final IModel<Boolean> checked = Model.of(Boolean.FALSE);
final int index = item.getIndex();
item.add(new Label("erhebungLabel", erhebungen.get(index).getName()));
item.add(new AjaxCheckBox("check", checked) {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
//TODO
}
});
}
});
}
在这个表中,我想在每个单元格中放置一个 AjaxCheckBox,以创建类似于 授权矩阵 的东西,现在问题是,因为列表的长度 zustaendigkeiten 最一段时间可能会变大,我无法插入静态数量的复选框。现在只有表格的一列被复选框覆盖。响应的 .html 文件如下所示:
<wicket:panel>
<form wicket:id="matrixForm">
<table class="matrix">
<thead>
<tr class="headers">
<th></th>
<span wicket:id="columns">
<th wicket:id="zustLabel"></th>
</span>
</tr>
</thead>
<tbody>
<tr wicket:id="rows">
<th wicket:id="erhebungLabel"></th>
<td><input wicket:id="check" type="checkbox" /></td>
</tr>
</tbody>
</table>
</form>
</wicket:panel>
类似这样的:
<tbody>
<tr wicket:id="rows">
<th wicket:id="erhebungLabel"></th>
<td><input wicket:id="check" type="checkbox" /></td>
<td><input wicket:id="check" type="checkbox" /></td>
<td><input wicket:id="check" type="checkbox" /></td>
</tr>
</tbody>
显然行不通,因为 1. 它应该是动态的,但我猜 JS 可以提供帮助,2. Wicket 会抛出 MarkUp 错误。
是否有任何 newCellItem 类似的方法我可以像在 DataTable 中一样使用?
【问题讨论】:
标签: java listview html-table wicket markup