从 ag 网格中取消选择选定的行 angular

Deselect selected rows from ag grid angular

是否有任何网格 api 以编程方式取消选择 ag-grid 选定的行? 我正在尝试对所选行执行一些操作,基本上是异步操作,之后我需要从网格中取消选择该行。

使用手柄 api 取消全选功能。成功了!

this.gridOptions.api.deselectAll();

您可以试试GridApi中的deselectAll()方法。不过,AgGrid 似乎没有取消选择特定行的选项。

将 gridOptions.rowDeselection 设置为 true with rowSelection as multiple 将在按住控制键时通过单击取消选择。

对于将来发现此内容的任何人:

通过设置 gridOptions.rowDeselection = true 允许手动排select离子,如 Victor 所说。

按照 OP 发现的那样,使用 gridOptions.api.deselectAll() 以编程方式删除select 所有行。

要以编程方式删除select 单行,请使用rowNode.setSelected(false)rowNode.setSelected(isSelected, clearSelection) 也可用于 select 行,如果 clearSelectiontrue.[=16=,则将删除 select 除主题行节点以外的所有行]

要取消选择特定的 row/node,请使用 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: ... Clicking a selected row in this mode will deselect the row.

咦!是的,这听起来像我需要的!但我不想多选...!我只想要单选。所以我认为 可能 rowSelection 设置为 single 会修复它并且选择将是 单一且可取消选择 。而且......是的,它有效!我最初怀疑这样做的原因是将“rowMultiSelectWithClick”与“single rowSelection”一起使用听起来矛盾,但它仍然有效这才是真正重要的! :) 因此,例如,如果您在 React 中使用它(在 Angular 或 Vanilla JavaScript 中非常相似),只需添加:

<AgGridReact
    rowSelection="single"
    rowMultiSelectWithClick={true}
    //...
>