voici mon code. cela fonctionne, si vous voulez parcourir toutes les lignes. maintenant, QA m'a dit que je devais le faire pour supporter le filtre. ainsi, lorsque l'utilisateur utilise un filtre, seul un sous-ensemble des lignes s'affiche sur la grille. Je dois parcourir uniquement ces lignes.
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;
}
J'ai essayé.
var data = entityGrid.dataSource.data().fetch();
et
var data = entityGrid.dataSource.data().filter();
ne pouvait pas le faire fonctionner.
Pour référence future et pour ceux qui sont intéressés, j'ai trouvé la solution sur:
http://colinmackay.scot/2012/07/23/kendo-ui-paging-and-accessing-the-filtered-results-in-javascript/
Cela fonctionne en obtenant d'abord la source de données de la grille, en obtenant le filtre et les données, en créant une nouvelle requête avec les données et en lui appliquant le filtre. Bien que cela aboutisse à l'obtention des résultats du filtre, il présente l'inconvénient distinct de traiter l'opération de filtrage deux fois.
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>')
});
}
Merci beaucoup!!! Avec cette aide, je l'ai fait maintenant ...
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;
}
Alors maintenant, je peux obtenir mes données filtrées très facilement !!! Impressionnant!!!
Exemple:
var dataFiltered = $("#MyGrid").data("kendoGrid").dataSource.dataFiltered();