【问题标题】:Tapestry: jquery/datatable goes back to first page on reloadTapestry:jquery/datatable 在重新加载时返回第一页
【发布时间】:2021-09-16 20:19:40
【问题描述】:

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

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: jquery datatable tapestry


    【解决方案1】:

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

    您是否考虑过使用 ajax 事件链接来避免重绘页面?

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

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

    【讨论】:

    • 您的回答“您是否考虑过使用 ajax 事件链接以使页面不重绘?”是正确的。我现在正在使用它。但我想刷新区域并让数据表停留在当前页面。对此的任何答案将不胜感激。
    • 我假设数据表在被刷新的区域中。您将需要查看数据表 API 以了解如何以编程方式设置初始页面。我猜你可以计算页面(从行索引),然后以某种方式将其传递给选项中的数据表。
    【解决方案2】:

    我已经知道答案了。我可以使用 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>
    

    【讨论】:

    • 请注意,bStateSave 使用客户端 cookie 来保存网格状态。我的解决方案试图在不需要 cookie 的情况下解决问题。 datatables.net/usage/features
    【解决方案3】:
    table.ajax.reload(null,false);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2012-09-22
      相关资源
      最近更新 更多