如何在ag-grid中通过rowData数据模型属性指定RowNode.id?
如何用rowData属性设置AG Grid的RowNode.id
我之前也踩过这个坑!AG Grid文档确实提到了这个功能,但具体实现方式讲得太模糊。其实搞定这个需求很简单,只需要在Grid配置里加一个getRowId回调函数,直接指定用rowData里的某个字段作为RowNode的id就行。
具体操作方法
- 在你的
gridOptions中添加getRowId函数,这个函数会接收一个参数对象,其中params.data就是当前行的原始数据对象 - 从
params.data里取出你想用来做RowNode.id的属性值,把它返回即可
代码示例
假设你的rowData里每个对象都有一个唯一的userId字段,想用它来作为RowNode.id:
const gridOptions = { columnDefs: [ { field: 'userId' }, { field: 'userName' }, { field: 'role' } ], // 核心配置就在这里 getRowId: (params) => params.data.userId, rowData: [ { userId: 'U001', userName: 'Alice', role: 'Admin' }, { userId: 'U002', userName: 'Bob', role: 'Editor' } ] };
这么做的好处
- 用业务数据里的唯一id代替AG Grid默认的行索引,当你对rowData做增删、排序、过滤操作时,RowNode.id不会跟着变动,能更稳定地定位行节点
- 之后你可以通过
gridApi.getRowNode('U001')直接获取对应的行节点,方便做行选中、数据更新等操作
注意事项
- 一定要保证返回的id是全局唯一的,否则AG Grid会出现行识别混乱的问题,比如重复行、操作失效等
- 如果不配置
getRowId,AG Grid会默认用行的索引作为RowNode.id,但这种方式在数据变动时非常不可靠
内容的提问来源于stack exchange,提问作者Jason Wall
相关产品推荐
相关产品推荐

