how to disable editing for only some rows in ag gr

2020-07-10 08:39发布

问题:

i want to enable only some rows in my ag-grid(exemple :2/5) based on a condition .

editable:false can't help because it is applied on the whole list unless if there is a method I do not know

any help please

回答1:

You can just bind function to editable property in columnDef, which will be executed on each try of edit

editable: this.checkEditFunction.bind(this)
...
checkEditFunction(params){
    //params.node - for row identity
    //params.column - for column identity
    return !params.node.isRowPinned() // - just as sample
}

.bind(this) - just for accessibility of external functions



回答2:

You can call stopEditing() method of gridApi after checking the condition - keeping editable: true.

Suppose, you are editing the row,

(rowEditingStarted)="onRowEditingStarted($event)"

Then in your component, you can stop the editing based on a check as per below.

private onRowEditingStarted($event) {
  if(!$event.data.propertyToCheck == <someCondition>) {
    this.gridApi.stopEditing();
}

Update:

You'll have to update template for the editing event.

<ag-grid-angular #agGrid
  ....
 (rowEditingStarted)="onRowEditingStarted($event)"
  ....
 ></ag-grid-angular>
</div>

Check this example for reference: https://www.ag-grid.com/javascript-grid-cell-editing/#example-cell-editing