24

これが私のコードです。すべての行をループしたい場合は、これが機能します。今、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();

それを動作させることができませんでした。

4

2 に答える 2

26

将来の参考のために、そして興味のある人のために、私は次の場所で解決策を見つけました:

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

これは、最初にグリッドのデータソースを取得し、フィルターとデータを取得し、データを使用して新しいクエリを作成し、それにフィルターを適用することで機能します。これにより、フィルターの結果が得られますが、フィルター操作を2回処理するという明らかな欠点があります。

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>')
    });
}
于 2012-10-22T18:55:15.267 に答える
6

どうもありがとう!!!この助けを借りて、私はこれをやった...

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();
于 2014-11-19T19:41:15.770 に答える