L.E
L.E

Reputation: 83

how to disable editing for only some rows in ag grid

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

Upvotes: 8

Views: 22591

Answers (2)

un.spike
un.spike

Reputation: 5113

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

Upvotes: 19

Paritosh
Paritosh

Reputation: 11560

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

Upvotes: 5

Related Questions