Как вы проходите через все строки в сетке kendoUI с фильтром
вот мой код. он работает, если вы хотите перебрать все строки. теперь, QA сказал мне, что я должен заставить его поддерживать фильтр. поэтому, когда пользователь использует фильтр, на сетке будет отображаться только подмножество строк. Мне нужно только прокручивать только те строки.
var entityGrid = $("#EntitesGrid").data("kendoGrid");
var data = entityGrid.dataSource.data();
var totalNumber = data.length;
for(var i = 0; i<totalNumber; i++) {
var currentDataItem = data[i];
VersionIdArray[i] = currentDataItem.VersionId;
}
Я пробовал.
var data = entityGrid.dataSource.data().fetch();
и
var data = entityGrid.dataSource.data().filter();
не удалось заставить его работать.
Ответы
Ответ 1
Для дальнейшего использования и для тех, кто заинтересован, я нашел решение по адресу:
http://colinmackay.scot/2012/07/23/kendo-ui-paging-and-accessing-the-filtered-results-in-javascript/
Сначала он получает источник данных сетки, получает фильтр и данные, создает новый запрос с данными и применяет к нему фильтр. Хотя это приводит к получению результатов фильтра, у него есть явный недостаток - обработка операции фильтра дважды.
function displayFilterResults() {
// Gets the data source from the grid.
var dataSource = $("#MyGrid").data("kendoGrid").dataSource;
// Gets the filter from the dataSource
var filters = dataSource.filter();
// Gets the full set of data from the data source
var allData = dataSource.data();
// Applies the filter to the data
var query = new kendo.data.Query(allData);
var filteredData = query.filter(filters).data;
// Output the results
$('#FilterCount').html(filteredData.length);
$('#TotalCount').html(allData.length);
$('#FilterResults').html('');
$.each(filteredData, function(index, item){
$('#FilterResults').append('<li>'+item.Site+' : '+item.Visitors+'</li>')
});
}
Ответ 2
Большое спасибо!!! С этой помощью теперь я сделал это...
kendo.data.DataSource.prototype.dataFiltered = function () {
// Gets the filter from the dataSource
var filters = this.filter();
// Gets the full set of data from the data source
var allData = this.data();
// Applies the filter to the data
var query = new kendo.data.Query(allData);
// Returns the filtered data
return query.filter(filters).data;
}
Так что теперь я могу получить мои отфильтрованные данные очень легко! Потрясающие!!!
Пример:
var dataFiltered = $("#MyGrid").data("kendoGrid").dataSource.dataFiltered();