Kendo ui 如何使用过滤器在kendoUI网格中循环所有行

Kendo ui 如何使用过滤器在kendoUI网格中循环所有行,kendo-ui,Kendo Ui,这是我的密码。如果您想在所有行中循环,它是有效的。现在,QA告诉我,我必须使其支持过滤器。所以,当用户使用过滤器时,网格上将只显示行的子集。我只需要在这些行中循环 var entityGrid=$(“#EntitesGrid”).data(“kendoGrid”); var data=entityGrid.dataSource.data(); var totalNumber=data.length; 对于(var i=0;i供将来参考,对于感兴趣的人,我在以下位置找到了解决方案: 它的工作原理

这是我的密码。如果您想在所有行中循环,它是有效的。现在,QA告诉我,我必须使其支持过滤器。所以,当用户使用过滤器时,网格上将只显示行的子集。我只需要在这些行中循环

var entityGrid=$(“#EntitesGrid”).data(“kendoGrid”);
var data=entityGrid.dataSource.data();
var totalNumber=data.length;

对于(var i=0;i供将来参考,对于感兴趣的人,我在以下位置找到了解决方案:

它的工作原理是首先获取网格的数据源,获取过滤器和数据,用数据创建一个新的查询并对其应用过滤器。虽然这会导致获取过滤器的结果,但它的明显缺点是处理过滤器操作两次

函数displayFilterResults(){
//从网格中获取数据源。
var dataSource=$(“#MyGrid”).data(“kendoGrid”).dataSource;
//从数据源获取筛选器
var filters=dataSource.filter();
//从数据源获取完整的数据集
var allData=dataSource.data();
//将筛选器应用于数据
var query=new kendo.data.query(allData);
var filteredData=query.filter(filters).data;
//输出结果
$('#FilterCount').html(filteredData.length);
$('#TotalCount').html(allData.length);
$('#FilterResults').html('';
$.each(过滤器数据、函数(索引、项){
$(“#FilterResults”).append(“
  • ”+item.Site+”:“+item.Visitors+”
  • ”) }); }
    非常感谢!!!有了这些帮助,我现在做到了

    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();
    

    这是一个很好的答案。谢谢!大家好@FoxDeploy,这是多年前的事了,我真的不知道这段代码是否仍然适用于当前的剑道版本……但它的目标是扩展[kendoGrid.dataSource]中一个名为“dataFiltered”的方法,以便您可以这样做:var dataFiltered=$(“#MyGrid”).data(“kendoGrid”).dataSource.dataFiltered();干得好!我现在正在学习如何使用剑道网格,文档中提供的信息足以让你感觉自己很笨。谢谢!
    var dataFiltered = $("#MyGrid").data("kendoGrid").dataSource.dataFiltered();