我有一个wicket表单 - 当我点击提交时 - 它显示了数据库中的动态表 - 我希望表可以排序 - 所以我使用了listview转发器和表sorttable.js 能够对表进行排序。
现在,当我重新刷新页面时 - 我有可用的排序功能 - 但是当我点击提交时 - 我无法对表格进行排序
wmc.add(new AttributeAppender("class", new Model("sorttable"), ";"));
wmc.add(new AttributeAppender("onclick", new Model("sorttable()"), ";"));
<table class="sortable" wicket:id="someContainer">
有什么方法 - 我可以重新加载我的sorttable.js - 而ajax重绘完成了吗?
答案 0 :(得分:4)
这里真正的问题是sorttable.js(至少是我发现的版本)并非真正意图。你可以将javascript调用附加到Ajax调用的末尾。查看我的结果at github。
基本上,您需要将它添加到重新加载ListView的AjaxSubmitLink中:
target.appendJavaScript("sorttable.init();");
唯一剩下的问题是sorttable.js以某种方式阻止自己运行两次。所以我需要注释掉
if (arguments.callee.done)
检查init()函数。我对javascript的了解相当有限。如果您有更好的方法,请告诉我。
答案 1 :(得分:0)
我不确定100%,但我认为不可能重新加载此ajax调用中的javascript或由此触发的。
我会使用wicket框架提供的DefaultDataTable
组件。它提供了对排序的构建支持。
答案 2 :(得分:0)
当你插入一些在文档就绪(jquery stuff)上执行的javascript时,你必须在对DOM应用更改时附加那些事件,你可以像bert告诉的那样做,或者覆盖名为renderHead的方法,
wathever wicket通过ajax实现了一个包含订单的表格,请参阅http://wicketstuff.org/wicket14/repeater/