2015-03-03 4 views
0

Сортировка не работает. Для столбцов, где я установил sortable: true, при щелчке заголовка я вижу, что функция подписки вызывается, но ничего не происходит. Оба dataRow1 и dataRow2 имеют правильную информацию, и знак возвращает значение, которое оно должно возвращать, но рендеринг сетки не работает. Любая помощь будет оценена.Slickgrid Сортировка не работает

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 
+0

Это библиотека angularjs? Вы притворяетесь, что используете с угловыми? –

+0

Да. Это угловое – user3358472

ответ

0
var cols = args.sortCol; 

это не массив - это один из ваших колонок определяется в getColumnHeadersForGrid()

sortedColumns вовсе не определено в вашем фрагменте кода

попробовать это:

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; 

    }); 
});