【问题标题】:How to get dataItems of selectedKeyNames of checked row across all pages in kendo grid如何在剑道网格中的所有页面上获取选中行的选定键名的数据项
【发布时间】:2019-01-22 14:01:57
【问题描述】:

我有带有本地数据、复选框和分页的 Kendo 网格。我在所有页面上使用 selectedKeynames() 获取所有检查项目 ID。 如何获取所有页面中已检查 iem 的数据项?

【问题讨论】:

    标签: kendo-ui grid


    【解决方案1】:

    如果您使用 Kendo 进行分页、排序等,而不是在服务器上处理这些操作,那么除了浏览数据源中的元素列表之外似乎没有其他方法。像这样的:

    var g = $("#grid").getKendoGrid();
    var d = g.dataSource.data();
    var s = g.selectedKeyNames();
    var r = [];
    for (var i = 0; i < d.length; i++) {
      if (s.indexOf(d[i].Id) >= 0) {
        r.push(d[i]);
      }
    }
    

    【讨论】:

    • 这将产生当前页面数据。我需要所有页面上的所有已检查数据项
    • 我可以使用 $("#grid").getKendoGrid().selectedKeyNames() 获取选中的 Id。如何使用选中的 Id 浏览数据源?
    • 我已经通过一个如何收集所有选定项目的示例扩展了我的答案。
    【解决方案2】:

    这是一个可能的解决方案。

    请查看以下道场:https://dojo.telerik.com/ibALanIX

    与其他解决方案一样,我正在获取数据,但在所选项目上使用 forEach 循环,因为当您开始拥有大量记录时,for 循环可能需要一些时间。

    所以我要做的就是检查选定的项目,然后从选定的列表中抓取这些项目。

     var grid = $("#rowSelection").data('kendoGrid');
     var selectedItems = grid.selectedKeyNames();
     var actualItems = [];
    
    
     if (selectedItems.length > 0) {
       selectedItems.forEach(function(key) {
         actualItems.push(grid.dataSource.get(key));
       });
    
    
     }
    

    这将减少您必须执行的循环次数,并且您知道选择中的键是什么,然后这仅使用 kendo DataSource 的默认 get 方法,该方法映射到模型中的 ID数据源架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      相关资源
      最近更新 更多