Я построил эту простую сетку:
Значение в третьем столбце является результатом умножения значений в первом и втором столбце.
Вот пример: 1 * 3 = 3
Моя проблема заключается в том, что я хочу обновить только первую строку.
(Моя вторая проблема заключается в том, что значение втретий столбец изменяется во всех строках, не входящих в конкретную строку, где были изменены новые значения первой и второй строки. Но я попытаюсь решить эту проблему позже.)
Вот код, который обновляет сетку:
/**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.
Я обнаружил, что он сделал это в первом столбце.
Я обновляю только первый столбец.
Надеюсь, я был достаточно ясен.