Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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
Javascript 您能在SlickGrid中使用分组对多个列进行排序吗?_Javascript_Jquery_Slickgrid - Fatal编程技术网

Javascript 您能在SlickGrid中使用分组对多个列进行排序吗?

Javascript 您能在SlickGrid中使用分组对多个列进行排序吗?,javascript,jquery,slickgrid,Javascript,Jquery,Slickgrid,所以我的问题很基本,但我的谷歌搜索结果显示答案很少。我想问一下stackoverflow社区,是否可以在slickgrid中对列进行分组排序,然后对其他列进行排序而不删除分组 例如,有一个包含State、City、Zip列的表。我有一个关于州的分组,每个州都有可折叠的分组。现在是否可以对City和/或Zip列进行排序,以便每个分组状态中的行按所需方向排序?您需要为需要排序的每个列启用并提供 注意:您需要使用shift单击来实际执行多列排序 对于示例中描述的结果: 单击以按状态对数据进行分组 单

所以我的问题很基本,但我的谷歌搜索结果显示答案很少。我想问一下stackoverflow社区,是否可以在slickgrid中对列进行分组排序,然后对其他列进行排序而不删除分组

例如,有一个包含State、City、Zip列的表。我有一个关于州的分组,每个州都有可折叠的分组。现在是否可以对City和/或Zip列进行排序,以便每个分组状态中的行按所需方向排序?

您需要为需要排序的每个列启用并提供

注意:您需要使用
shift单击
来实际执行多列排序

对于示例中描述的结果:

  • 单击以按状态对数据进行分组
  • 单击状态列标题对其进行排序
  • 按住Shift键并单击任何其他列以交替其排序顺序

按州分组
清晰分组
var dataView=new Slick.Data.dataView();
$('#clearGrouping')。单击(函数(){
dataView.setGrouping([])
})
$(“#组”)。单击(函数(){
dataView.setGrouping({
getter:“状态”,
格式化程序:函数(g){
返回“+g.value+”(“+g.count+”项目)”;
},
聚集聚集:false,
懒散:对
});
});
变量列=[
{id:“column1”,name:“State”,field:“State”,sortable:true},
{id:“column2”,名称:“City”,字段:“City”,可排序:true},
{id:“column3”,name:“Zip”,field:“Zip”,sortable:true}
];
变量选项={
enableCellNavigation:true,
是的,
对,,
多列排序:true
};
var grid=new Slick.grid('#myGrid',dataView,columns,options);
dataView.onRowCountChanged.subscribe(函数(e,args){
grid.updateRowCount();
grid.render();
});
订阅(函数(e,args){
grid.invalidateRows(args.rows);
grid.render();
});
grid.onSort.subscribe(函数(e,args){
var cols=args.sortCols;
排序(函数(dataRow1,dataRow2){
for(变量i=0,l=cols.length;ivalue2?1:-1))*符号;
如果(结果!=0){
返回结果;
}
}
返回0;
});
});
风险值数据=[
{州:'CA',市:'Los Angeles',邮编:'90014'},
{州:'CA',市:'Santa Monica',邮编:'90401'},
{州:'CA',市:'Napa',邮编:'94558'},
{州:'NY',市:'曼哈顿',邮编:'10001'},
{州:'NY',市:'Buffalo',邮编:'14201'},
{州:'HI',市:'Hilo',邮编:'96720'},
{州:'HI',市:'Hawi',邮编:'96719'},
]
setItems(数据“zip”);

正如其他注释中所述,请确保已启用多列排序,并且希望能够排序的列具有可排序列选项。 然后我做了这件事,它对我起了作用:

    grid.onSort.subscribe(function (e, args) {
        var sortCol, sortDir;

        var comparer = function (a, b) {
            var x = a[sortCol], y = b[sortCol];
            return (x === y ? 0 : (x > y ? 1 : -1)) * sortdir;
        };

        var cols = args.sortCols;
        for (var i = 0, l = cols.length; i < l; i++) {
            sortdir = cols[i].sortAsc ? 1 : -1;
            sortcol = cols[i].sortCol.field;
            dataView.sort(comparer, sortdir);
        }
    });
grid.onSort.subscribe(函数(e,args){
var sortCol,sortDir;
变量比较器=函数(a,b){
变量x=a[sortCol],y=b[sortCol];
返回(x==y?0:(x>y?1:-1))*sortdir;
};
var cols=args.sortCols;
for(变量i=0,l=cols.length;i