Tapestry:jquery / datatable在重新加载时返回到第一页

时间:2013-06-26 13:14:28

标签: jquery datatable tapestry

我的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;
}

非常感谢任何帮助。感谢。

2 个答案:

答案 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>