Я хочу узнать, какая строка отредактирована в Ag-Grid? - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу узнать, какая строка отредактирована в Ag-Grid?Я хочу сохранить только те строки, которые редактируются?так есть ли какой-нибудь метод, чтобы я мог узнать, какая строка была отредактирована?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

глобальная кнопка сохранения?не связано с узлом (строкой)

да.правильно

Хорошо, в этом случае вам нужно в качестве примера отследить через Id, какие данные являются новыми.Итак, предположим, что у вас есть данные unique идентификатор - который будет представлять ключ Primary или что-то в этом роде - и этот ключ должен обрабатываться на стороне сервера или базы данных.

Теперь, чтобы получить только «новые» узлы, вы можете фильтровать grid-data следующим образом:

   let newData = [];
   this.gridApi.forEachNode(node=>{
       if(!node.data.id)
           newData.push(node.data)
   })

Но я рекомендую избегать нескольких insert и обрабатывать каждое создание отдельновот так:

handleInsert():void{
    let yourDataModel = {
        ...
    }
    this.sampleApiService.sampleRequest(dataModel).subscribe(result => {
        this.gridApi.updateRowData({add:[result], addIndex:0});
    })
}

result - должен вернуть измененный dataModel с уже определенным Id

В этом случае вы сможете обновить grid-data и быть увереннымэти данные верны и уже вставлены в ваш storage.

Обновленный добавленный пример для обновления

Вместо события (cellEditingStopped) вы также можете использовать valueSetter для отслеживания обновлений ячейки

handleUpdateValue(params: ValueSetterParams){
    // see if values are different if you have a complex object,
    // it would be more complicated to do this.
    if (params.oldValue!==params.newValue) {
        // params.colDef.field - updated cell ID
        ... handle update logic here - call API and so on ...
        // get grid to refresh the cell
        return true;
    } else {
        // no change, so no refresh needed
        return false;
    }
}
0 голосов
/ 17 сентября 2018

Вы можете использовать onCellEditingStopped() событие для ag-grid.

html

<ag-grid-angular
    ...
    (cellEditingStopped)="onCellEditingStopped($event)"
    ...
    ></ag-grid-angular>

ts

onCellEditingStopped(e) {
    console.log(e.rowIndex);
}
...