【问题标题】:Problems with TableSorter Initial Number of Visible RowsTableSorter 初始可见行数的问题
【发布时间】:2014-10-13 13:17:00
【问题描述】:

我昨天发现了 TableSorter,所以很明显我还不太了解它,但是通过使用几个演示和阅读文档,我可以在表格中设置一个工作排序,直到我发现 寻呼机小部件。

并不是说它不起作用,它只是没有像我期望的那样起作用。我的大部分实现都是基于作者提供的this demo

我刚刚删除了 widthFixed 选项和斑马小部件(因为我没有看到它在起作用)并将我的四列中的两列定义为不可排序。我还稍微修改了寻呼机小部件的输出文本:

$( document ).ready( function() {

    $( 'table' ).tablesorter({

        theme: 'bootstrap',
        headerTemplate: '{content}{icon}',
        widgets: [ "uitheme" ],
        headers: {
            3:{sorter: false},
            4:{sorter: false}
        }
    }).tablesorterPager({

        container: $(".ts-pager"),
        saveSort : false,
        output: '{startRow} to {endRow} ({totalRows})'
    });

});

此脚本作为外部文件位于 HTML 末尾,靠近 </body>。与 jQuery 插件的大多数用法不同,因为我使用的是所有页面共有的一个页脚文件(服务器端编程的一部分),而不是最后添加脚本,我在要排序的表之后添加了它们,按以下顺序:

<script src="/public/assets/projectfolder/js/jquery.tablesorter.min.js"></script>
<script src="/public/assets/projectfolder/js/jquery.tablesorter.widgets.min.js"></script>
<script src="/public/assets/projectfolder/js/jquery.tablesorter.pager.min.js"></script>

现在,我认为不起作用的事情,但可能是我的愚蠢。

  • 刷新后会记住分页器选项

在找到选项 saveSort 并在 tableSortPager 选项中将其设置为 false 之前,我认为这是一个错误。然而,这并没有像我预期的那样工作,我在页面大小下拉列表中选择的内容在刷新后被保留,就像没有设置该选项一样。

  • 初始可见行数并非每次都有效

我第一次添加 Pager 小部件时,它起作用了。但是因为默认的内存行为是记住排序选择,所以之后的每个新请求都不再起作用了。可见行的初始数量始终是在页面大小下拉列表中选择的。

确实如此,如果我选择另一个值,数字会按预期更改,并且在刷新后,我之前选择的数量就是显示的那个。

阅读文档我看到了 size 选项。我用一个很小的数字定义它(因为我仍在构建 GUI 并且我没有真实数据)但是,再次显示的行数是记住的。

清理浏览器缓存使此属性按预期工作,直到选择新的页面大小值,即使 saveSort 定义为 false,也会再次被记住。

我该如何解决这些问题?

【问题讨论】:

    标签: jquery tablesorter


    【解决方案1】:

    您要使用的选项是pager savePages option

    $(function(){
        $( 'table' ).tablesorter({
            theme: 'bootstrap',
            headerTemplate: '{content}{icon}',
            widgets: [ "uitheme" ],
            headers: {
                3:{sorter: false},
                4:{sorter: false}
            }
        })
        .tablesorterPager({
            container: $(".ts-pager"),
            savePages : false,
            output: '{startRow} to {endRow} ({totalRows})'
        });
    });
    

    saveSort widget option 实际上与 saveSort 小部件一起使用,并且该选项属于 widgetOptions:

    $(function(){
      $("table").tablesorter({
        widgets: ["saveSort"],
        widgetOptions : {
          // if false, the sort will not be saved for next page reload
          saveSort : false
        }
      });
    });
    

    【讨论】:

    • 谢谢 Mottie,对于 savePages : false 选项,当我设置以下内容并发现它不起作用时,我正在寻找它。 (取自mottie.github.io/tablesorter/docs/example-pager.html) // 可见行数 - 默认为 10 size: 10,
    • @AKS 对我来说工作正常,你能修改this demo 以复制问题吗。
    • @Mottie,很抱歉不太清楚。我在 github 上阅读了您的文章,我假设我只需要选项 size:6 根据我的要求,但这不起作用。在阅读了您的答案后(上图),我添加了选项 savePages : false ,之后 size:6 开始工作。我不确定 savePages 与显示表中的行数有什么关系。 savePages 的解释给我的印象是,如果需要,某些类型的保存(我只显示)可能用于会话等,如果需要此选项。什么 savePages:true 或不提供 savePages 选项?
    • @AKS 似乎不起作用的原因是用户设置的savePages 存储在本地存储中的大小覆盖了size 选项设置。您可以通过使用 pageSize 选择器设置页面大小或使用以下代码清除存储值来更新存储值:$.tablesorter.storage( $('table'), 'tablesorter-pager', '' ); (demo)
    • 非常感谢 Mottie,我错过的关键是“保存在本地存储中的页面大小会覆盖大小选项设置”。现在我明白了。
    猜你喜欢
    • 2015-02-14
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多