2012-10-22 27 views
19

đây là mã của tôi. nó hoạt động, nếu bạn muốn lặp qua tất cả các hàng. bây giờ, QA nói với tôi rằng tôi phải làm cho nó để hỗ trợ bộ lọc. vì vậy, khi người dùng sử dụng bộ lọc, chỉ một tập con của các hàng sẽ hiển thị trên lưới. Tôi chỉ cần lặp qua các hàng đó.làm thế nào để bạn lặp qua tất cả các hàng trong lưới kendoUI với bộ lọc

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

Tôi đã thử.

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

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

không thể có được nó làm việc.

Trả lời

18

Để tham khảo trong tương lai và cho những ai quan tâm, tôi thấy các giải pháp tại địa chỉ:

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

Nó hoạt động bằng cách đầu tiên việc tổ chức của nguồn dữ liệu của lưới, nhận được bộ lọc và các dữ liệu , tạo một truy vấn mới với dữ liệu và áp dụng bộ lọc cho nó. Trong khi điều này dẫn đến việc nhận được kết quả của bộ lọc, nó có những bất lợi riêng biệt của việc xử lý hoạt động lọc hai lần.

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

Rất cám ơn! Với trợ giúp này bây giờ tôi đã làm điều này ...

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

Vì vậy, bây giờ tôi có thể lấy dữ liệu được lọc của mình rất dễ dàng !!! Tuyệt vời!!!

+0

Đây là một câu trả lời tuyệt vời. Cảm ơn! –

Các vấn đề liên quan