使用 ag-Grid 为每一行添加唯一的 id

Posted

技术标签:

【中文标题】使用 ag-Grid 为每一行添加唯一的 id【英文标题】:Add unique id to every row using ag-Grid 【发布时间】:2019-11-14 06:29:35 【问题描述】:

我在我的网格中使用了 javascript 中的 ag-Grid 插件。我的问题是弄清楚如何将行更新到数据库中。如何为每一行设置一个唯一的 id?

<div id="myGrid" style="height: 600px;" class="ag-theme-balham"></div>

    <script type="text/javascript" charset="utf-8">
        // specify the columns
        var columnDefs = [
            headerName: "Make", field: "make",
            headerName: "Model", field: "model",
            headerName: "Price", field: "price"
        ];

        // specify the data
        var rowData = [
            make: "Toyota", model: "Celica", price: 'test', my_unique_id: '123',
            make: "Ford", model: "Mondeo", price: 32000, my_unique_id: '42341',
            make: "Porsche", model: "Boxter", price: 72000, my_unique_id: '567'
        ];

        // let the grid know which columns and what data to use
        var gridOptions = 
            columnDefs: columnDefs,
            rowData: rowData
        ;

        // lookup the container we want the Grid to use
        var eGridDiv = document.querySelector('#myGrid');

        // create the grid passing in the div to use together with the columns & data we want to use
        new agGrid.Grid(eGridDiv, gridOptions);
    </script>

【问题讨论】:

你试过什么?这个脚本应该在 内吗? 【参考方案1】:

在定义您的列 columnDefs 时,您需要添加键,如果需要,请将 hide: true 设置为该数据不会出现在 UI 上

 var columnDefs = [
            headerName: "Make", field: "make",
            headerName: "Model", field: "model",
            headerName: "Price", field: "price", 
            headerName: "Key", field: "my_unique_id", hide = true, 
 ];

在此处查看ag-grid 文档中列的所有属性:https://www.ag-grid.com/javascript-grid-column-properties/

【讨论】:

【参考方案2】:

我不确定您是否知道这一点,但是当设置行数据时,ag-grid 实际上为每一行分配一个唯一 ID。

访问每个行节点的id 的方法之一是使用forEachNode() 方法,如ag-grid gridOptions API documentation 中指定的那样。 forEachNode() 迭代所有行,并返回每一行的数据。

假设您使用的是 Vanilla JavaScript(没有任何框架,如 React 或 Angular),请执行以下操作以获取 id

 gridOptions.api.forEachNode(node => 
   console.log(node.id);
   // do the rest
 );

【讨论】:

【参考方案3】:
 
    headerName: "Num",
    field: "id",
    filter: true,
    width: 150,
    cellRendererFramework:(params)=>
      return <span>params.rowIndex</span>
    
  ,

【讨论】:

虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。

以上是关于使用 ag-Grid 为每一行添加唯一的 id的主要内容,如果未能解决你的问题,请参考以下文章

ag-Grid - 是不是可以为每一行创建一个浮动菜单?

AG-GRID 无法将图标按钮添加到我的 ag-grid 中的 ag-grid 和多选复选框的每一行

如何在 Oracle Apex 5 中为每一行唯一地更新列?

当根据单元格值为每一行添加其他数据时,VBA 创建超链接

根据数组中对象的数量更改 id (javascript/jquery)

sql 添加一个新列,根据每种类型自动为每一行编号。