0

我的 jquery/datatable 在一个区域中。它有一个带有事件链接的列。它有很多记录,因此有很多页。例如,如果我按下第 5 页上的事件链接并重新加载数据表,它将返回到第 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;
}

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

4

3 回答 3

2

您的事件链接是非 ajax(没有“区域”属性),因此它会导致页面刷新,从而导致您的数据表被重新绘制。

您是否考虑过使用 ajax eventlink 以使页面不重绘?

如果您仍想在活动结束后刷新页面,则需要使用 @PageActivationContext 或 @Persist 来存储请求之间的当前行。我不熟悉 jquery/datatable 但我确信有一种方法可以初始化小部件以指向特定页面。您可能需要根据所选行计算页面。

看来您可以使用fnPageChange函数在数据表上设置当前页面。

于 2013-06-28T10:24:34.403 回答
0

我已经知道答案了。我可以使用 bStateSave 选项,但值必须是字符串。这意味着我需要使用“真”而不是布尔真。

这是有效的代码片段

options.put("bStateSave", "true");

另一种方法是不刷新数据表。

这是在 tml 中工作的代码片段

<a t:type="eventLink" t:event="review" t:context="[rowUser.id]" href="#" t:zone="^">Test</a>
于 2013-07-04T07:57:24.317 回答
0
table.ajax.reload(null,false);

第二个参数用于保持页面状态。

于 2021-09-16T12:19:40.547 回答