#angular #ag-grid
Вопрос:
Я использую AG-GRID и ANGULAR в сочетании с Spring Boot для разработки.
Ситуация такова…
Когда я нажимаю кнопку запроса для первого вызова RESTful API, значение фильтра будет обновлено, но при втором выполнении запроса для вызова API фильтр не может быть обновлен.
Я прочитал официальную документацию о списках наборов и фильтров на ag-grid.com. Официальный документ предоставляет метод refreshFilterValues()
и атрибут refreshValuesOnOpen: true
, но ни один из них не работает.
Позже я обнаружил, что это может быть связано с версией AG-GRID. Версия, которую я сейчас использую, 21.2.2, а затем я перехожу к официальному документу этой версии: https://www.ag-grid.com/archive/21.2.2/javascript-grid-filter-set/
Я использовал этот атрибут syncValuesLikeExcel: true
, но он все еще не работает. Это меня очень беспокоит. Пожалуйста, какой-нибудь экспертный совет?
Часть кода Здесь:
//AG-GRID Version 21.2.2
//rowModelType: 'infinite'
this.defaultColDef = {
resizable: true ,
sortable: true ,
editable: true,
width: 150,
filter: true
};
this.columnDefs = [
{ headerName: 'customer', field: 'customer', width: 150 },
{ headerName: 'material', field: 'material', width: 150 },
{ headerName: 'unitQuotation', field: 'unitQuotation', width: 150 },
{ headerName: 'startTime', field: 'startTime', width: 150,
filter: 'agSetColumnFilter'
,filterParams: {
values:params => {
setTimeout(() => {
const values = this.startTimeArray;
params.success(values); }, 500);
},
syncValuesLikeExcel:true,
}
,cellRenderer: function (params) {
return moment(params.value).format('YYYY-MM-DD'); }},
//startTimeArray like this ['2021-01-01',',2021-02-01','2021-03-01']
getStartTime(obj){//update filter values
this.httpClient.post(getStartTimeListURL,obj).subscribe(data => {
console.log(data);
this.startTimeArray = data;
});
}
search(){
console.log('Search');
var contextObj ={};
var datasource = {
getRows: (params: IGetRowsParams) => {
contextObj['startTime'] = this.startTime;
contextObj['endTime'] = this.endTime;
contextObj['material'] = this.material;
contextObj['customerCode'] = this.selectedCustomerID;
params.context = contextObj;
params.endRow = this.gridOptions.paginationPageSize;
this.getStartTime(params);//****call RESTful API****
var filter = this.gridOptions.api.getFilterInstance('startTime');
this.quoImportService.getQuoHistoryByCondition(params)
.subscribe(data => {
params.successCallback(data['content'], data['totalElements'])
});
}
}