【问题标题】:Ag-grid Row selectionAg-grid 行选择
【发布时间】:2018-10-27 05:41:41
【问题描述】:

在使用单元格选择的帮助下选择ag-grid 的行时:this.gridOptions.rowMultiSelectWithClick = true; 是否可以仅访问最后选择的行进行计算并保持先前​​选择的行状态不变。

【问题讨论】:

  • 你怎么知道你最后一次选择是什么时候,因为当this.gridOptions.rowMultiSelectWithClick = true你可以点击并选择任意次数。
  • 在 getSelectedRows() 的帮助下,它将选择行的实例并保留所有行信息,我想访问最新选定行的实例并需要进行计算和因此需要使用 getSelectedRows 访问最后一行的机制,保持其余行状态不变。

标签: angular ag-grid ag-grid-ng2


【解决方案1】:

除了 Paritosh 提到的内容之外,您还可以监听 rowSelected 事件并维护一个节点数组。

<ag-grid-angular
   [rowSelection]="rowSelection"
   (rowSelected)="onRowSelected($event)"
   [rowMultiSelectWithClick]="true"
   (selectionChanged)="onSelectionChanged($event)"></ag-grid-angular>
selectedNodes: RowNode[];     

onRowSelected(event) {
   if(event.node.selected) {
      this.selectedNodes.push(event.node);
   }
}

getLastItem() {
   return this.selectedNodes[this.selectedNodes.length - 1];
} 

您可以根据需要随时调用getLastItem()方法,获取最后选中的节点。

【讨论】:

  • 您还需要处理这种情况,并确保在取消选择节点时删除该节点。所以这个解决方案还不完美。此外,我们在gridApi 中也有api.getSelectedNodes() 和api.getSelectedRows()。最好使用这些 api 来实现这一点 - 正如我的回答中所更新的那样。
【解决方案2】:

当然,您必须为此使用onRowSelected 事件,在该事件中您将获得所需的数据作为event 参数。

onRowSelected(event) {
  console.log("row " + event.node.data + " selected = " + event.node.selected);
}

数据:event.node.data
选择与否:event.node.selected

<ag-grid-angular
  .....
  [rowSelection]="rowSelection"
  (rowSelected)="onRowSelected($event)"
  [rowMultiSelectWithClick]="true"
  (selectionChanged)="onSelectionChanged($event)"
  ></ag-grid-angular>

下面是实际示例:Plunk - ag-grid rowMultiSelectWithClick


更新

您可以使用gridApi 来获取最后选择的节点。当您取消选择一行时,这甚至会起作用。它会给我们在取消选择最新行之前选择的最后一行。

getLastSelectedNode(){
  let rows = this.gridApi.getSelectedRows();
  if(rows.length > 0)
    console.log(rows[rows.length - 1]);
  else
    console.log('No rows selected');
}

Updated Plunk

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2020-03-27
    • 2015-12-31
    • 1970-01-01
    • 2016-01-21
    • 2017-07-07
    • 2017-03-20
    • 2021-09-03
    • 2019-08-06
    相关资源
    最近更新 更多