0
我有一個AjaxFallbackDefaultDataTable表巫婆一些文本列(PropertyColumn)。該表還包含一個包含可編輯文本字段的列。我想通過AJAX更新一個PropertyColumn,但我不想更新整個表。 我該怎麼做?AJAX在Wicket更新表列
我有一個AjaxFallbackDefaultDataTable表巫婆一些文本列(PropertyColumn)。該表還包含一個包含可編輯文本字段的列。我想通過AJAX更新一個PropertyColumn,但我不想更新整個表。 我該怎麼做?AJAX在Wicket更新表列
如果使用Wicket 6,則可以使用組件間事件。
首先創建其持有AjaxRequestTarget
像這樣的事件:
public class AjaxUpdateEvent {
private final AjaxRequestTarget target;
public AjaxUpdateEvent(AjaxRequestTarget target) {
this.target = target;
}
public AjaxRequestTarget getAjaxRequestTarget() {
return target;
}
}
您可以發送這樣的事件形成要使用send()
方法的任何Component
。你發這樣的活動:
send(getPage(), Broadcast.DEPTH, new AjaxUpdateEvent(target));
然後在AjaxFallbackDefaultDataTable
我會嘗試重寫newCellItem從某個地方發射和所需的細胞項目添加到AjaxRequestTarget當聽那裏的事件。類似的東西:
AjaxFallbackDefaultDataTable table =
new AjaxFallbackDefaultDataTable("table", null, null, FLAG_RESERVED1) {
@Override
protected Item newCellItem(String id, int index, IModel model) {
Item item;
if (index == indexOfColumnYouWant){
item = new Item(id, index, model) {
@Override
public void onEvent(IEvent<?> event) {
super.onEvent(event);
if ((event.getPayload() instanceof AjaxUpdateEvent)){
((AjaxRequestTarget)event.getPayload()).add(item);
}
}
};
} else {
item = super.newCellItem(id, index, model);
}
return item;
}
};
另外,你也該項目如果isVisible()
添加到目標。
難道你不介意與我們分享至少相關的一部分努力 - 只是爲了支持[你有什麼嘗試?](http://whathaveyoutried.com/) – 2013-02-10 17:39:21
我們甚至不知道*當你*想要更新那一列.. – 2013-02-10 19:54:08
羅伯特,這就是我期待的(組件事件)。 – 2013-02-10 22:45:11