【发布时间】:2019-02-11 11:13:58
【问题描述】:
是否有任何网格 api 可以以编程方式取消选择 ag-grid 选定的行? 我正在尝试对选定的行执行一些操作,基本上是异步操作,之后我需要从网格中取消选择该行。
【问题讨论】:
标签: javascript angular ag-grid ag-grid-ng2
是否有任何网格 api 可以以编程方式取消选择 ag-grid 选定的行? 我正在尝试对选定的行执行一些操作,基本上是异步操作,之后我需要从网格中取消选择该行。
【问题讨论】:
标签: javascript angular ag-grid ag-grid-ng2
使用了grip api deselectAll 函数。成功了!
this.gridOptions.api.deselectAll();
【讨论】:
对于将来发现此内容的任何人:
按照 Victor 所说,通过设置 gridOptions.rowDeselection = true 来允许手动取消选择行。
使用gridOptions.api.deselectAll() 以编程方式取消选择所有行,因为 OP 发现。
要以编程方式取消选择单行,请使用rowNode.setSelected(false)。
rowNode.setSelected(isSelected, clearSelection) 也可用于选择行,如果clearSelection 为true,将取消选择除主题rowNode 之外的所有行。
【讨论】:
rowNode 是获取行的函数返回的数据类型。从 gridApi 调用的这些函数的示例:ag-grid.com/angular-grid/grid-api/#reference-rowNodes 在此处阅读有关行节点的更多信息:ag-grid.com/angular-grid/row-object
将 gridOptions.rowDeselection 设置为 true 并将 rowSelection 设置为多个将在按住控制键时取消选择通过单击选中的对象。
【讨论】:
您可以尝试 GridApi 中的 deselectAll() 方法。不过,AgGrid 似乎没有取消选择特定行的选项。
【讨论】:
要取消选择特定的行/节点,请使用 api.getSelectedNodes() 而不是 getSelectedRows()。然后对于每个节点,使用 node.data 作为您需要的行信息,然后使用 node.setSelected(false) 在完成后取消选择。
let selected = gridOptions.api.getSelectedNodes();
_.each(selected, function(node) {
let row = node.data;
//stuff
node.setSelected(false);
});
【讨论】:
我认为这很奇怪,但将 rowDeselection 设置为 true 对我不起作用。我想要的很简单:能够在已经选择的行中取消选择。所以我检查了 AG Grid 文档的Row Selection 部分,发现:
rowMultiSelectWithClick: ... 在此模式下单击选定的行将取消选择该行。
嗯!是的,这听起来像我需要的!但我不想多选......!我只想要单选。所以我认为也许将rowSelection 设置为single 会修复它,并且选择将是单一且可取消选择。而且......是的,它有效!我最初在这样做时有疑问的原因是使用“rowMultiSelectWithClick”和“single rowSelection”听起来很矛盾,但它无论如何都有效,这就是真的很重要! :)
因此,例如,如果您在 React 中使用它(在 Angular 或 Vanilla JavaScript 中非常相似),只需添加:
<AgGridReact
rowSelection="single"
rowMultiSelectWithClick={true}
//...
>
【讨论】: