2015-03-03 4 views
0

L'implémentation de tri ne fonctionne pas. Pour les colonnes où j'ai mis sortable: true, au clic de l'entête je vois que la fonction subscribe est appelée mais rien ne se passe. Les deux dataRow1 et dataRow2 ont les informations correctes et le signe renvoie la valeur qu'il est censé retourner mais le rendu de la grille ne fonctionne pas. Toute aide serait appréciée.L'implémentation Slickgrid Sort ne fonctionne pas

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

C'est une librairie angularjs? Vous prétendez utiliser avec angularjs? –

+0

Ouais. C'est angularjs – user3358472

Répondre

0
var cols = args.sortCol; 

ce n'est pas un tableau - c'est l'une de vos colonnes définies dans getColumnHeadersForGrid()

sortedColumns est tout pas défini dans votre extrait

essayez ceci:

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; 

    }); 
});