Javascript Slickgrid自定义排序
我试图在光滑的网格中实现自定义排序。我用这个作为参考。我想强制具有特定属性的行始终按网格底部排序。(我试图让slickgrid的一个工作示例在jsfiddle.net中工作,但我做不到。)我尝试过这个,但它不起作用Javascript Slickgrid自定义排序,javascript,sorting,slickgrid,Javascript,Sorting,Slickgrid,我试图在光滑的网格中实现自定义排序。我用这个作为参考。我想强制具有特定属性的行始终按网格底部排序。(我试图让slickgrid的一个工作示例在jsfiddle.net中工作,但我做不到。)我尝试过这个,但它不起作用 var gridData =[ { Id:1, Code: '232046', Depth2: 4000,}, { Id:2, Code: '23247', Depth2: 2000 }, { Id:3, Code: '12543', Depth2: 1500
var gridData =[
{ Id:1, Code: '232046', Depth2: 4000,},
{ Id:2, Code: '23247', Depth2: 2000 },
{ Id:3, Code: '12543', Depth2: 1500, rowoption_stickyorder: 1 }
];
grid.onSort.subscribe(function (e, args) {
var footerOrderProperty = 'rowoption_stickyorder';
var comparer = function (a, b) {
var result = (a[args.sortCol.field] > b[args.sortCol.field]) ? 1 : -1;
if (b[footerOrderProperty] != undefined || a[footerOrderProperty] != undefined)
result = -1;
return result;
}
dataview.sort(comparer, args.sortAsc);
});
我错过了什么
if (b[footerOrderProperty] != undefined || a[footerOrderProperty] != undefined)
result = -1;
不行false | | true
将具有属性的对象/行放置在不具有该属性的对象/行之上
var bb = b[footerOrderProperty],
aa = a[footerOrderProperty];
if(aa && !bb){
result = 1;
}
else if(!aa && bb)
{
result = -1
}
看
注意:由于mime类型的问题,在Chrome中Fiddle不起作用,并且使资源
rawgithub
的常见解决方法似乎不起作用。Origineil,很好的工作!你的建议让我成功了99%。我真的希望列在两个方向上都可以排序,并将行保持在底部。我修改了你的代码以考虑排序器,它的工作方式就像一个冠军
grid.onSort.subscribe(function (e, args) {
console.log(args.sortAsc)
var footerOrderProperty = 'rowoption_stickyorder';
var comparer = function (a, b) {
var result = (a[args.sortCol.field] > b[args.sortCol.field]) ? 1 : -1;
var bb = b[footerOrderProperty],
aa = a[footerOrderProperty];
if (aa && !bb) {
result = args.sortAsc ? 1 : -1;
} else if (!aa && bb) {
result = args.sortAsc ? -1 : 1;
} else if (aa != undefined && bb != undefined) {
result = (aa > bb) ? 1 : -1;
result *= args.sortAsc ? 1 : -1
}
console.log(a.id + " | " + b.id + " " + result)
return result
}
dataView.sort(comparer, args.sortAsc);
});
这是最棒的。你太棒了!既然你指出了我的问题所在。疯狂的我只能在firefox中使用小提琴。(Chrome和IE11不起作用)解释了Chrome的问题。我以前让它工作过,但这次由于某种原因它不会工作。小心最后一个
,否则如果,那么bb[footerOrderProperty]
应该是bb
或b[footerOrderProperty]
是的,我也发现了。我修正了小提琴和回音。再次感谢你的帮助!