【问题标题】:How to get the selected element in the Grid component for Kendo UI Angular如何在 Kendo UI Angular 的 Grid 组件中获取所选元素
【发布时间】:2017-06-06 15:10:22
【问题描述】:

当用户单击任何行时,我试图获取选定的元素。为此,我使用了 selectionChange 事件,但只有 returns index 和元素的 selected 状态。由于我还启用了分页和排序,因此我无法使用该索引来获取当前元素,或者至少我不知道该怎么做。

我用来输入网格的数据变量是这样的:

this.gridData = process(this.elements, this.state);

elements 是我的原始数据数组,state 是具有设置(跳过、获取、排序)的 State 对象。

有什么想法吗?

【问题讨论】:

  • 也许唯一的方法是从你的对象的状态中计算出哪些元素当前是可见的:page * items_per_page + index 是你在排序项目中的真正索引...
  • 是的,我目前正在尝试这种方法,但是必须“手动”计算它似乎很复杂,我希望能够直接从某个地方获取该元素......
  • 我用 plunker 玩了一下,如果让 Kendo Grid 处理分页等,Index 值是原始列表的真实索引...见link
  • 我自己也得到了类似的东西,但由于我也使用了排序功能,所以有点不同,所以在我的代码中我必须使用处理过的数据。无论如何谢谢@Brumiano

标签: angular kendo-ui-angular2


【解决方案1】:

因此,当您将网格与分页一起使用时,您必须将 GridDataResult 元素考虑在内。

因此,如果您将跳过设置为 10,并且您在第 4 页,当您单击网格中的第一个元素时,事件的索引将为 40。在我的代码中,我使用它的方式是: 我的网格使用了一个状态,它具有跳过和采取的属性。当您浏览页面时,跳过更改以反映显示的元素。所以,在第 4 页,跳过将是 40(如果我一次显示 10 个结果。)所以当我想要这个元素的 ID 时,我使用:

let fac =  this.gridView.data[value.index - this.state.skip].id;

gridView 是我的 GridDataResult。 value 是我传入的事件, state 是我的状态。我的元素有一个我需要的 ID 属性,所以这就是我的目标。

希望这会有所帮助。

哦,我应该补充一下,您在事件中收到的索引指的是 GridDataResult,而不是您的数据源。因此,如果您启用了过滤器,则 GridDataResult 中的条目将更少。但是,我的方法并不关心 GridDataResult 的组成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 2022-01-20
    • 2018-07-29
    • 1970-01-01
    • 2022-12-15
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多