簡體   English   中英

使用自定義復選框實現Ag-Grid行選擇

[英]Implementing ag-Grid row selection with custom checkbox

我的ag-Grid表具有以下ColDef

const checkboxRenderer: React.SFC<ICellRendererParams> = params => {
  const checked = find(this.state.selectedOptions, x => x.id === params.data.id) != null;
  return (
    <div className="custom__cb">
      <input type="checkbox" checked={checked} />
      <label>
        <span className="custom__cb__label-text">{params.value}</span>
      </label>
    </div>
  );
};

const columnDef: ColDef = 
    colDef.field = 'id';
    colDef.cellRendererFramework = checkboxRenderer;
}

我已經這樣定義了ag-Grid表:

onSelectionChanged = (e: SelectionChangedEvent) => {
  const { api } = e;
  if (api) {
    const selectedOptions = api.getSelectedRows();
    this.setState({ selectedOptions });
  }
};

onRowSelected = (e: RowSelectedEvent) => {
  const isAlreadySelected = find(this.state.selectedOptions, x => x.id === e.data.id) != null;
  if (isAlreadySelected) {
    this.setState({ selectedOptions: this.state.selectedOptions.filter(x => x.id !== e.data.id) });
  } else {
    this.setState({ selectedOptions: [...this.state.selectedOptions, e.data] });
  }
};

<AgGridReact
  columnDefs={columnDefs}
  rowData={options}
  onSelectionChanged={this.onSelectionChanged}
  onRowSelected={this.onRowSelected}
  rowSelection="multiple"
/>

這將呈現正確的自定義復選框,並且在選擇一行時還可以將組件中的selectedOptions設置為正確。 問題是我的自定義復選框未反映正確的選中狀態。 始終未選中。 更改我的狀態后,看起來checkboxRenderer並沒有重新呈現。

如何實現自定義行選擇復選框以正確反映選中狀態?

我不確定這與您的問題有關,但是以下是使AgGridReact在狀態更改時進行更新的關鍵:

<AgGridReact組件上,使用onGridReady屬性而不是設置數據,並且還要設置deltaRowDataMode={true}

componentDidUpdate React組件事件中,有選擇地(僅當行數據更改時)通過this.gridApi.setRowData(rowData)重置行數據

這些更改是在保持網格狀態的同時更新網格的關鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM