Как обновить конкретную строку в ag-grid - PullRequest
0 голосов
/ 07 мая 2019

Я построил эту простую сетку:
enter image description here
Значение в третьем столбце является результатом умножения значений в первом и втором столбце.
Вот пример: 1 * 3 = 3
enter image description here
Моя проблема заключается в том, что я хочу обновить только первую строку.
(Моя вторая проблема заключается в том, что значение втретий столбец изменяется во всех строках, не входящих в конкретную строку, где были изменены новые значения первой и второй строки. Но я попытаюсь решить эту проблему позже.)
Вот код, который обновляет сетку:

 /**THIS CODE IS RESPONSIBLE FOR REFRESHING THE GRID AFTER VALUES HAVE BEEN CHANGED */
   private gridApi;
   private gridColumnApi;
   onGridReady( params) {
     this.gridApi = params.api;
     this.gridColumnApi = params.columnApi;
     params.api.sizeColumnsToFit();
   }
   public RefreshRisqueBrutColumn() {
    const params = { force: true ,
      columns: ['RskBrt'],
      rowNodes: [] // specify rows, or all rows by default
    };
     this.gridColumnApi
     this.gridApi.refreshCells(params);

    };
   }
   /**THIS CODE IS RESPONSIBLE FOR REFRESHING THE GRID AFTER VALUES HAVE BEEN CHANGED */

Я не смог найти способ обновить только конкретный столбец, в котором были изменены значения раскрывающегося списка.
Для ясности вот соответствующий код:

Первый ColumnOneCellRenderer: html файл

<select class="form-control"  (change)=" UpdateRisqueBrut($event.target);" >
    <br>
    <option >1- Très improbable</option>
    <option >2- Peu probable</option>
    <option >3- Possible</option>
    <option >4- Probable</option>
</select>
<br>

ColumnOneCellRenderer: ts файл

message: number;
  constructor(private data: DataService
    // , private comp: AppComponent
    ) { }
  ngOnInit() {
  }
  params: any;
  agInit(params: any): void {
    this.params = params;
  }
  public UpdateRisqueBrut(t) {
    if (t.value === '1- Très improbable') {
    this.data.changeMessage(1);
    } else if (t.value === '2- Peu probable') {
    this.data.changeMessage(2);
    } else if (t.value === '3- Possible') {
    this.data.changeMessage(3);
    } else if (t.value === '4- Probable') {
    this.data.changeMessage(4);
    }
  }

Служба, которая отвечает запередача выбранного значения из customCellRendДалее в gridComponent: DataService

@Injectable()
export class DataService {
  private messageSource = new BehaviorSubject<number>(1);
  currentMessage = this.messageSource.asObservable();
  private messageSource2 = new BehaviorSubject<number>(1);
  currentMessage2 = this.messageSource2.asObservable();
  constructor() { }
  changeMessage(message: number) {
    this.messageSource.next(message);
  }
  changeMessage2(message: number) {
    this.messageSource2.next(message);
  }
}

Соответствующий код ts в компоненте сетки для получения значения:

  constructor(private data: DataService) { }
    message1: number;
    message2: number;
    ngOnInit() {
      this.data.currentMessage.subscribe(message => this.message1 = message
        );
      this.data.currentMessage2.subscribe(message => this.message2 = message);
    }

Третийопределение столбца:

 {
          headerName: 'RiskBrut',
          headerToolName: 'Consultez les échelles',
          field: 'RskBrt',
          cellRenderer: params => {
            return (
            this.message1*this.message2
            );
          }
        }

Вот мои вопросы:
1 / Как обновить конкретный столбец (вообще говоря)?
2 / Как я могу обновить только столбец, гдепроизошло изменение выбранных значений из списков dropDown?
Например: пользователь изменяет значение столбца 1.
Я обнаружил, что он сделал это в первом столбце.
Я обновляю только первый столбец.
Надеюсь, я был достаточно ясен.

...