1
我利用檢票列表視圖創建列和行做了一個表,代碼如下:檢票:動態填充單元使用自定義內容
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放到每個單元格中,創建一個類似的授權矩陣現在的問題是,由於列表的長度最長可能會增大一些,因此我無法插入靜態數量的CheckBoxes。現在,表格中只有一列覆蓋了CheckBoxes。響應.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一樣使用?
這可能是一個很好的解決方案,我會檢查它 –
運行完美,謝謝! :-) –