7

我在这里发布这个是因为这浪费了我今天相当多的时间。

我试图RowNode.id从我设置 agggrid 的rowData属性的对象中的数据中设置。意思是,我想在我的数据模型上使用一个属性来提供 ag-grid 行模型的内置id字段。他们在文档中提到了这一点,但没有解释如何做。

4

3 回答 3

6

要让 ag-grid 使用应用程序分配的 ID,请实现网格回调 getRowNodeId()。回调应返回特定行数据的 ID。例如,以下代码片段返回所提供数据项的属性“id”的值:

function getRowNodeId(data) {
    return data.id;
}

提供 ID 时必须遵守以下规则:

  1. ID 必须是唯一的
  2. ID 不得更改

如果您打算用作 ID 的属性不是唯一的或发生更改,则会导致网格中出现未指定的行为。换句话说,不要使用不唯一或可以更改的字段。

如果使用行分组,网格将始终为组级别分配 ID(因为不存在与应用程序提供的行数据的一对一映射)。回调 getRowNodeId() 仅用于非组级别的行。

这是文档的链接

于 2020-08-20T23:40:24.717 回答
5

这个问题的答案是您需要getRowNodeId在网格的网格选项对象上设置属性,如下所示:

// where 'd' is an object in your model
this.gridOptions.getRowNodeId = d => {
   return d.id; // return the property you want set as the id.
}
于 2018-03-22T21:14:43.457 回答
3

他们实际上不仅提到它,而且还有一个很好的例子:

// callback tells the grid to use the 'id' attribute for id's
// id's should always be strings
gridOptions.getRowNodeId = function(data) {
    return data.id;
};

// get the row node with ID 55
var rowNode = api.getRowNode('55');

// do something with the row, eg select it
rowNode.setSelected(true);

这是文档的链接

于 2019-04-18T21:00:41.827 回答