网格功能可根据数据预先选择一个复选框

时间:2020-07-13 14:37:49

标签: ag-grid ag-grid-angular angular10

根据要求,我们将从api中获取值,并且在加载Ag Grid时应预先选择这些行。


this.columnDefs = [
      {
        headerName: 'Option Code',
        field: 'Option',
        maxWidth: 125,
        checkboxSelection: true,
      }
];

this.addOption = ["000005","000010","000026"]; // External data 

在网格上就绪:

onGridReady(params) { 
    this.gridApi = params.api; 
    this.gridColumnApi = params.columnApi; 
    this.gridApi.getRenderedNodes().forEach(function (node:any) {
        node.setSelected(this.addOption.includes(
            node.data.Option.toString()
        )); 
     }); 
}

我们正在尝试通过以下代码预选默认复选框,但该复选框不起作用。

selectAllAmerican(val) { 
    this.gridApi.getRenderedNodes().forEach(function (node:any) {
        node.setSelected(val.includes(node.data.Option.toString()));
    }); 
} 

当我们在“获取”按钮下使用时,上面的代码有效。请查看并指导我们。

2 个答案:

答案 0 :(得分:0)

根据要求,我们将从api中获取值,并且在加载Ag Grid以及用户选择/取消选中该复选框需要执行任务时,应预先选择这些行。 列定义this.columnDefs = [ { headerName:“选项代码”, 字段:“选项”, maxWidth:125, checkboxSelection:true, } ];

网格定义:

  <ag-grid-angular
  #agGrid
  style="width: 375px; height: 100%; display: inline-block;"
  *ngIf="Flag12"
  id="myGrid"
  class="userclass"
  [enableBrowserTooltips]="true"
  [columnDefs]="columnDefs"
  [defaultColDef]="defaultColDef"
  [suppressRowClickSelection]="true"
  [rowSelection]="rowSelection"
  [rowDeselection]="true"
  [rowData]="rowData"

(rowSelected)=“ onRowSelected($ event)”

  (gridReady)="onGridReady($event)"
  >

this.addOption = [“ 000005”,“ 000010”,“ 000026”]; //外部数据

两个问题: 1.如何根据外部变量this.addOption预先选择复选框。 2. rowSelected:如果是pr-select(当我们从逻辑启用复选框时),则rowSelected应该禁用,并且当用户选择/取消选择复选框rowSelected(需要执行某些逻辑)时,由于逻辑原因,它可能会启用其他复选框从后端。因此,它应该在用户选择和取消选择时起作用。

请引导我。

答案 1 :(得分:0)

回答晚了,我遇到了类似的问题,解决方案是在 rowData 或网格数据准备好时,在 GridReady 方法中放置以下行。 所以在这两个地方都提到这一点。

this.gridApi?.forEachNode(function (node) {
                        node.setSelected(true);
            });