【发布时间】:2011-07-26 09:48:04
【问题描述】:
1) 我正在使用ListView 从数据库中填充一些 2 个标签。该表有 100 行,所以我得到 100 <TD>s。这很好用。
this.selectView = new PageableListView("selectedBG", new PropertyModel(this, "selectedList"), 10) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final ListItem item){
selParentGclOrg = new Label("selParGclOrgId", new PropertyModel(gclOrg, "parentGclOrgId"));
selParentGclOrg.setOutputMarkupId(true);
final AjaxLink ajl = new AjaxLink("clickMe"){
public void onClick(AjaxRequestTarget target){
chilgGcl = gclOrg.getGclOrgId();
selectPopUp.show(target);
}
};
ajl.add(selParentGclOrg);
final Label lblGclOrg = new Label("selGclOrgId", Integer.valueOf(gclOrg.getGclOrgId()).toString());
item.add(ajl);
item.add(lblGclOrg);
}
}
2) 一个标签被超链接并打开一个弹出窗口,我可以从中选择标签 2 的可能值。弹出窗口完美打开。
selectPopUp = new select_popUP("showModal",container){
@Override
public void onSelect(AjaxRequestTarget target, int gclOrgId){
selParentGclOrg.setModelObject(Integer.toString(gclOrgId));
target.addComponent(selectView);
close(target);
}
@Override
public void onCancel(AjaxRequestTarget target){
close(target);
}
};
3) 在弹出窗口中,可能的值是超链接的。单击它会关闭弹出窗口并将可能的值发送到主页。这行得通...我认为。
4) 使用以下命令将新值分配给标签 2:
target.addComponent(selectView);
这就是我卡住的地方。 Wicket 应该更改同一行上的标签(至少,我认为),但它正在更新最后一行的标签 2。
我做错了什么?
【问题讨论】:
-
顺便说一句,如果您从数据库中填充,您可能需要调查
DataView,它为分页、排序等提供了更多的灵活性。 -
我知道这是一个愚蠢的问题,但是因为我在你的代码 sn-p 中看不到它,所以我不得不问它:你在列表中的某个地方调用
setOutputMarkupId()吗? (呃,我刚刚意识到ListView可能不允许你这样做,所以我只会给 LT 的答案 +1。)
标签: java listview popup wicket