2013-11-26 1 views
0

В основном это почти тот же самый пример, как указано http://mleibman.github.io/SlickGrid/examples/example-header-row.html Только изменения, которые я сделал:slickgrid фильтрации показывают неправильные строки

Кулак является то, что фильтр применяется только несколько столбцов,

if(args.column.id == 'name' || args.column.id == 'contract'){ 
     var s = $("<input type='text'>"); 
     s.data('columndata', args.column.id) 
     .val(columnFilters[args.column.id]) 
     .appendTo(args.node); 
    }; 

Второе отличие состоит в данных не вставлен в DataView в конструкции. У меня есть вызов ajax, который загружает данные в формате json, а затем использует dataView.setItems для ввода массива данных в DataView.

Третье изменение, которое я сделал, мой фильтр проверяет значение в строке, столбце, а не точное соответствие.

function filter(item){ 
for(var columnId in columnFilters){ 
    if(columnId != undefined && columnFilters[columnId] != ''){ 
    var c = obj.grid.getColumns()[obj.grid.getColumnIndex(columnId)]; 
    var value1 = item[c.field].toUpperCase(); 
    var value2 = columnFilters[columnId].toUpperCase(); 
    if(value1.indexOf(value2)==-1){ 
     return false; 
    }; 
    }; 
}; 
return true; 
}; 

Обычно фильтр работает. Он даже фильтрует правильно. Если есть 2 элемента (строки), в которых говорится «трава», фильтр будет содержать 2 строки.

Но так как он нашел 2 ряда, он отобразит 2 первых ряда.

Это работает таким образом. Если фильтр нашел N правильных значений, он отобразит первые N строк.

я пытаюсь отладки DataView, но он работает только с рядами составляют не число строк соответствия Param

ответ

0

местоположения проблемы были найдено. я неправильно использовал метод getItem(), который возвращал неправильные элементы. couse я передал номер строки в него