Jquery tablesorter:如何在不同html页面上的两个表上保持排序顺序,具有相同的标题,但是顺序不同,一些隐藏

时间:2016-08-11 16:15:11

标签: jquery tablesorter

所以我有两个html页面,其中包含相同数据的表,尽管列可能的顺序不同,有些列将隐藏在一个表中而不会隐藏在另一个表中。我希望这两个表的初始排序基于其他表排序。目前我有一个脚本,在sortEnd上创建一个类似于sortList的二维数组,除了第一个数组中的索引而不是列的名称被替换。然后我将此数组存储在sessionStoreage中,以便我可以在第二个html页面中访问它。但是,我不确定如何转换回这个数组,以便将列名更改回第二个表的适当索引。我正在使用Mottie forkorter。下面是我创建第二个数组以发送到另一个html页面的第一个脚本。

    <script>
$(document).ready(function() 
    { 
    var currentSort;

        $("#myTable").tablesorter({

            widthFixed: false,

            theme: "blue",

            sortReset   : true,


            widgets: ['stickyHeaders'],

            widgetOptions: {
                stickyHeaders_addResizeEvent: true  
            }



  }).bind("sortEnd", function(event) {
      var table = event.target,
      currentSort = table.config.sortList;
      // target the first sorted column
      var columnNum;
      var columnName;
      var currentSortwColumnNames = [[],[]];

      for(var x = 0; x < currentSort.length; x ++)
          {
            if (!currentSort[x]) 
            {                 
                currentSort[x] = [];
            }
            if (!currentSortwColumnNames[x]) 
            {                 
                currentSortwColumnNames[x] = [];
            }


            columnNum = currentSort[x][0];
            columnName = $(table.config.headerList[columnNum]).text();
            currentSortwColumnNames[x][0] = columnName;



            currentSortwColumnNames[x][1] = currentSort[x][1];

          }

      console.log(currentSortwColumnNames.toString());
      sessionStorage.setItem("currentSortwColumnNames",      currentSortwColumnNames);
  })

    } 
); 


</script>

2 个答案:

答案 0 :(得分:0)

我不会创建数组,但会将设置保留为JSON字符串:

var jsonSettings = JSON.stringify(table.config.sortList);

并将此值存储在cookie中。需要时,只需将其解析回对象:

var obj = JSON.parse(jsonSettings);

答案 1 :(得分:0)

您可以使用saveSort widget保存并恢复这些表的排序。默认情况下,它会为每个页面上的每个表单独保存排序。让它在不同页面上的两个表上工作的技巧是设置存储选项:

  • 要设置会话存储空间,请将storage_useSessionStorage窗口小部件选项设置为true

    $(function() { 
      $("#myTable").tablesorter({
        widthFixed: false,
        theme: "blue",
        sortReset: true,
        widgets: ['stickyHeaders', 'saveSort'],
        widgetOptions: {
          stickyHeaders_addResizeEvent: true,
          storage_useSessionStorage: true
        }
      });
    });
    

    不需要&#34; sortEnd&#34;现在代码。

  • 然后在两个表上设置匹配的data-table-page属性(任何字符串) - 由storage_page小部件选项设置。

    <table data-table-page="mytable">...</table>
    

有关详细信息,请参阅storage function文档。