【问题标题】:Slickgrid Sort implementation does not workSlickgrid 排序实现不起作用
【发布时间】:2015-05-04 10:58:52
【问题描述】:

排序实现不起作用。对于我设置了 sortable: true 的列,单击标题时,我看到正在调用 subscribe 函数但没有任何反应。 dataRow1 和 dataRow2 都具有正确的信息,并且符号返回它应该返回的值,但网格渲染不起作用。任何帮助将不胜感激。

var data = getDataForGrid(); 

var dataView = new Slick.Data.DataView();
    dataView.beginUpdate();
    dataView.setItems(data, 'employeeID');
    dataView.endUpdate();

var grid = new Slick.Grid("#myGrid", dataView, getColumnHeadersForGrid(), getOptions());

    grid.onSort.subscribe(function(e,args){
    var cols = args.sortCol;
    dataView.sort(function (dataRow1, dataRow2) {
        var field = cols[i].sortCol.field;
        var value1 = null;
        var value2 = null;

        if(dataRow1 !=null){
            value1 = dataRow1[sortedColumns.field];
        }

        if(dataRow2 !=null){
            value2 = dataRow2[sortedColumns.field];
        }
        var sign = cols[i].sortAsc ? 1: -1;
        var result = (value1 ==value2 ? 0 : (value1 > value2 ? 1: -1)) * sign;

        if(result != 0) {
            return result;
        }
        return 0;

    });
    grid.invalidate();
    grid.render();
}        


function getDataForGrid(){
    var data = [];
    //Have logic to get the data
    return data;
}

function getColumnHeadersForGrid(){
    var columns = [];
    columns.push({id:"employeeID", name:"Employee ID", field:"employeeID", sortable: true, width: 200});
    columns.push({id:"title", name:"Title", field:"title", sortable: true, width: 200});
        columns.push({id:"duration", name:"Duration", field:"duration", sortable: true, width:150});
        columns.push({id:"%", name:"% Complete", field:"percentComplete", sortable: true, width: 200});

    return columns;

}
function 

【问题讨论】:

  • 这是一个angularjs库?你假装和 angularjs 一起使用?
  • 是的。这是 angularjs

标签: jquery angularjs sorting slickgrid


【解决方案1】:
var cols = args.sortCol;

这不是一个数组 - 这是您在 getColumnHeadersForGrid() 中定义的列之一

sortedColumns 根本没有在你的 sn-p 中定义

试试这个:

grid.onSort.subscribe(function(e,args){
    var field = args.sortCol.field;
    var sign = args.sortAsc ? 1: -1;

    dataView.sort(function (dataRow1, dataRow2) {
        value1 = dataRow1[field];
        value2 = dataRow2[field];

        var result = (value1 ==value2 ? 0 : (value1 > value2 ? 1: -1)) * sign;

        return result;

    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多