我的jquery / datatable在一个区域中。它有一个包含eventlinks的列。它有很多记录,因此有很多页面。例如,如果我按第5页的eventlink并重新加载数据表,它将返回到第1页。我希望它保留在当前页面,第5页。我找到的jquery解决方案是“bStateSave”:true 。我尝试将它放入我的JSONObject getOptions()但它不起作用。如何使页面保持在Tapestry的当前页面?
这是我的tml文件
<table width="100%" t:type="jquery/datatable" t:id="list" t:source="users" t:row="rowUser" t:options="options" t:add="action" >
<p:actionCell >
<a t:type="eventLink" t:event="review" t:context="[rowUser.id]" href="#">Test</a>
</p:actionCell >
这是我的java文件
public JSONObject getOptions() {
JSONObject options = new JSONObject();
options.put("bJQueryUI", true);
options.put("sDom", "<\"H\"lfr>t<\"F\"ip>");
options.put("bStateSave", true);
return options;
}
非常感谢任何帮助。感谢。
答案 0 :(得分:2)
您的eventlink是非ajax(没有'zone'属性),因此它将导致页面刷新,这将导致重新绘制数据表。
您是否考虑过使用ajax eventlink以便不重新绘制页面?
如果您仍想在事件后刷新页面,则需要使用@PageActivationContext或@Persist在请求之间存储当前行。我不熟悉jquery / datatable,但我确信有一种方法可以将窗口小部件初始化为指向特定页面。您可能需要根据所选行计算页面。
您似乎可以使用fnPageChange功能在数据表上设置当前页面。
答案 1 :(得分:0)
我已经找到了答案。我可以使用bStateSave选项,但值必须是一个字符串。这意味着我需要使用“true”而不是Boolean true。
以下是适用的代码片段
options.put("bStateSave", "true");
另一种方法是不刷新数据表。
以下是在tml中运行的代码片段
<a t:type="eventLink" t:event="review" t:context="[rowUser.id]" href="#" t:zone="^">Test</a>