【问题标题】:I want to select all the records of current page only我只想选择当前页面的所有记录
【发布时间】:2021-04-23 04:53:48
【问题描述】:

我正在使用igx-grid。当我使用rowSelection 单击全选时,它会选择网格中存在的所有记录,而不是当前页面的所有记录。我想启用一些东西,当我点击选择所有 igx-grid 复选框时,它应该只选择当前页面记录,而不是全部。有没有办法做同样的事情?因为我从过去 3 天开始尝试,但没有得到任何解决方案。提前致谢!!!

【问题讨论】:

  • 全选复选框确实选择了所有记录。如果要将选择限制为子集,请按照@Toxy 的建议处理onRowSelectionChange 事件
  • 我用前端分页处理它,但我想用服务器端分页(SSP)开发它,但是在使用 SSP 时,我在过滤中遇到问题,我发布了一个相同的问题.您能否就同一问题发表您的看法?这是链接 => stackoverflow.com/questions/67312538/…

标签: javascript angular typescript infragistics ignite-ui


【解决方案1】:

以编程方式选择行:

<button (click)="this.grid.selectRows([1,2,5], true)">Select 1,2 and 5</button> 

以编程方式取消选择行:

<button (click)="this.grid.deselectRows([1,2,5])">Deselect 1,2 and 5</button>

来源:Official documentation of igx-grid (Row Selection)

尝试使用(onRowSelectionChange)事件

【讨论】:

  • 是的,但是当我们过滤数据时,它会过滤 igx 网格的内置功能中的数据,它不能正常工作。
  • 那么当您过滤数据时,您不仅需要从第一页选择所有数据吗?
  • 使用此事件onRowSelectionChange 并输入您的逻辑
  • 我什么都试过了,但是当我过滤的时候,我使用的所有逻辑都没有用,你有什么解决办法吗?
  • 需要查看您的代码,因为它还可以在过滤完成后存储数据,然后使用 rowselect 更改事件
【解决方案2】:

您可以像@Toxy 所说的那样使用this.grid.deselectRows([1,2,5]),但作为参数,您可以使用IgxGridComponent 的属性dataView,它是一个仅显示在网格中的行数据的数组。

onRowSelectionChange(event) {
    this.grid.selectRows(this.grid.dataView.map(x => x.id), true);
    this.currentSelection = this.grid.selectedRows;
}

这对过滤器没有问题,因为应用过滤器时 dataView 会发生变化。现在在 this.currentSelection 中只有页面 id 数据。唯一的小问题是,图形,其他页面的行数据显示为选中(尽管它们没有出现在 this.grid.selectedRows 中);我使用(pageChange)="onPageChange($event)" 解决了这个问题,当页面更改时this.grid.deselectAllRows(false); false 参数让您可以取消选择网格中的所有行,而不管过滤器如何。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 2012-02-24
    • 1970-01-01
    • 2022-01-12
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多