Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQueryTableSorter:如何在不同html页面上的两个表上保持排序顺序,这些表具有相同的标题,但顺序不同,并且有些是隐藏的_Jquery_Tablesorter - Fatal编程技术网

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

jQueryTableSorter:如何在不同html页面上的两个表上保持排序顺序,这些表具有相同的标题,但顺序不同,并且有些是隐藏的,jquery,tablesorter,Jquery,Tablesorter,因此,我有两个html页面,其中的表具有相同的数据,尽管列的顺序可能不同,有些列将隐藏在一个表中,而不是隐藏在另一个表中。我希望这两个表的初始排序基于其他表的排序。目前我有一个脚本,它在sortEnd上创建了一个类似于sortList的2d数组,除了替换第一个数组中的索引之外,列的名称被替换。然后我将此数组存储在sessionStoreage中,以便在第二个html页面中访问它。但是,我不确定如何转换回这个数组,以便将列名更改回第二个表的适当索引。我正在使用tablesorter的莫蒂叉。下面是

因此,我有两个html页面,其中的表具有相同的数据,尽管列的顺序可能不同,有些列将隐藏在一个表中,而不是隐藏在另一个表中。我希望这两个表的初始排序基于其他表的排序。目前我有一个脚本,它在sortEnd上创建了一个类似于sortList的2d数组,除了替换第一个数组中的索引之外,列的名称被替换。然后我将此数组存储在sessionStoreage中,以便在第二个html页面中访问它。但是,我不确定如何转换回这个数组,以便将列名更改回第二个表的适当索引。我正在使用tablesorter的莫蒂叉。下面是我创建2d数组并发送到另一个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>

$(文档).ready(函数()
{ 
var-currentSort;
$(“#myTable”).tablesorter({
修正:错,
主题:“蓝色”,
真的,
小部件:['stickyHeaders'],
widgetOptions:{
stickyHeaders\u addResizeEvent:true
}
}).bind(“分拣机”,功能(事件){
var table=event.target,
currentSort=table.config.sortList;
//以第一个排序列为目标
柱状变种;
var列名;
var currentSortwColumnNames=[[],[];
对于(var x=0;x
我不会创建数组,而是将设置作为JSON字符串保存:

var jsonSettings = JSON.stringify(table.config.sortList);
并将该值存储在cookie中。需要时,只需将其解析回对象:

var obj = JSON.parse(jsonSettings);

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

var jsonSettings = JSON.stringify(table.config.sortList);
并将该值存储在cookie中。需要时,只需将其解析回对象:

var obj = JSON.parse(jsonSettings);
可以使用保存和还原这些表上的排序。默认情况下,它会为每页上的每个表分别保存排序。让它在不同页面上的两个表上工作的诀窍是设置存储选项:

  • 要设置会话存储,请将小部件选项设置为
    true

    $(function() { 
      $("#myTable").tablesorter({
        widthFixed: false,
        theme: "blue",
        sortReset: true,
        widgets: ['stickyHeaders', 'saveSort'],
        widgetOptions: {
          stickyHeaders_addResizeEvent: true,
          storage_useSessionStorage: true
        }
      });
    });
    
    现在不需要“分拣机”代码

  • 然后在两个表上设置一个匹配的
    数据表页面
    属性(任意字符串)-由小部件选项设置

    <table data-table-page="mytable">...</table>
    
    。。。
    
有关详细信息,请参阅文档。

您可以使用保存和恢复这些表上的排序。默认情况下,它会为每页上的每个表分别保存排序。让它在不同页面上的两个表上工作的诀窍是设置存储选项:

  • 要设置会话存储,请将小部件选项设置为
    true

    $(function() { 
      $("#myTable").tablesorter({
        widthFixed: false,
        theme: "blue",
        sortReset: true,
        widgets: ['stickyHeaders', 'saveSort'],
        widgetOptions: {
          stickyHeaders_addResizeEvent: true,
          storage_useSessionStorage: true
        }
      });
    });
    
    现在不需要“分拣机”代码

  • 然后在两个表上设置一个匹配的
    数据表页面
    属性(任意字符串)-由小部件选项设置

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

有关更多详细信息,请参阅文档。

问题在于,sortList是一个二维数组,它包含列索引,如果是升序或降序排序,那么它就是一个二维数组。这就是为什么我创建了另一个数组,但将列索引替换为列名而不是索引。我需要在第二个html页面上做相反的操作,但我不确定如何进行。我想我需要使用jquery来获取标题的列名数组,并将其与我存储在sessionStorage.so JSON.stringify数组中的currentSortwColumnNames数组进行比较。将数组字符串化,保存到session,并在需要时将其解析回来。它将处理从字符串到数组的转换。不过,问题是sortList是一个二维数组,它保存列索引,如果是升序或降序排序。这就是为什么我创建了另一个数组,但将列索引替换为列名而不是索引。我需要在第二个html页面上做相反的操作,但我不确定如何进行。我想我需要使用jquery来获取标题的列名数组,并将其与我存储在sessionStorage.so JSON.stringify数组中的currentSortwColumnNames数组进行比较。将数组字符串化,保存到session,并在需要时将其解析回来。它将处理从string到array.Mottie的转换,这将起作用,但两个表中的列顺序不同(即相同的列名,但在表中的顺序不同)。因此,当我使用该代码时,排序顺序不正确。这就是为什么在我的原始代码中,我创建了一个类似于sortList的数组,只是我用列名(currentSortwColumnNames)替换了列索引。我不确定的是,如何在第二个html页面的第二个表上执行相反的操作。Mottie,除了两个表上的列顺序不同(即,相同的列名,但在表上的顺序不同)。因此,当我使用该代码时,排序顺序不正确。这就是为什么在我的原始代码中,我创建了一个类似于sortList的数组,只是我用列名(currentSortwColumnNames)替换了列索引。我不确定的是,如何在第二个html页面的第二个表上执行相反的操作。