2012-10-22 7 views
19

oto mój kod. działa, jeśli chcesz przeglądać wszystkie wiersze. teraz QA powiedziała mi, że muszę go obsłużyć do obsługi filtra. więc, gdy filtr użytkownika użyje, tylko podzbiór wierszy pojawi się na siatce. Muszę tylko przechodzić tylko przez te wiersze.jak przeglądasz wszystkie wiersze w siatce kendoUI z filtrem

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; 
    } 

Próbowałem.

var data = entityGrid.dataSource.data().fetch(); 

i

var data = entityGrid.dataSource.data().filter(); 

nie mógł dostać pracy.

Odpowiedz

18

Dla przyszłości i dla tych, którzy są zainteresowani, znalazłem rozwiązanie pod adresem:

http://colinmackay.scot/2012/07/23/kendo-ui-paging-and-accessing-the-filtered-results-in-javascript/

Działa on przez pierwsze dotarcie do źródła danych w siatce, w coraz filtr i dane , tworzenie nowego zapytania z danymi i stosowanie do niego filtru. Chociaż powoduje to uzyskanie wyników filtru, ma on istotną wadę dwukrotnego przetwarzania operacji filtru.

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>') 
    }); 
} 
3

Dziękujemy !!! Z tą pomocą teraz zrobiłem to ...

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; 
} 

Teraz mogę bardzo łatwo uzyskać przefiltrowane dane !!! Niesamowite!!!

+0

To była świetna odpowiedź. Dzięki! –

Powiązane problemy