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