我在stackoverflow中尝试了与问题相关的答案。它没有成功。
我试图在UI-GRID中进行服务器端分页。刚刚将所有数据导出为csv。
因为,我的数据很大。在加载时,我只显示25个数据。当页面更改查询将被传递并且它从db返回接下来的25个值。
是否有任何事件触发导出所有数据为csv?所以,我可以点击控制器并检索实际存在的值。
分页示例代码:
gridApi.pagination.on.paginationChanged($scope, function(newPage, pageSize) {
paginationOptions.pageNumber = newPage;
paginationOptions.pageSize = pageSize;
CommonService.getStudents("../login/loadValues",
paginationOptions)
.then(function(data) {
$scope.ListOption.data = data;
$scope.ListOption.totalItems = data[0].count;
});
});
以同样的方式,我需要在将所有数据导出为CSV时触发事件。 ??
任何建议都将受到赞赏。
答案 0 :(得分:0)
部分找到答案。
$scope.ListOption.exporterAllDataFn=function(){
//service call
CommonService.getStudents("../login/loadValues",
paginationOptions)
.then(function(data) {
$scope.ListOption.data = data;
$scope.ListOption.totalItems = data[0].count;
});
}
当我点击"将所有数据导出为csv"时,该函数被调用2次。
注意:这仅在第一次加载页面时发生。 第二次点击时,会调用一次函数。
任何人都可以解释?
答案 1 :(得分:0)
一旦您掌握了所有内容,就将外部排序/分页更改为false
exporterAllDataFn: () => {
filter.pageSize = this.gridOptions.totalItems;
filter.pageNumber = 1;
return getStuff()
.then((allData: any) => {
this.gridApi.grid.options.useExternalPagination = false;
this.gridApi.grid.options.useExternalSorting = false;
this.gridOptions.data = allData.items;
this.gridOptions.totalItems = allData.totalNumber;
return allData.items;
});
},
this.gridApi.core.on.sortChanged(this.$scope, (grid, sortColumns) => {
if (this.gridApi.grid.options.useExternalSorting) {
this.sortDirection = sortColumns[0] ? sortColumns[0].sort.direction === "asc" ? 0 : 1 : 0;
this.sortColumn = sortColumns[0] ? sortColumns[0].colDef.databaseField : null;
getStuff()
}
});
this.gridApi.pagination.on.paginationChanged(this.$scope, (newPage, pageSize) => {
if (this.gridApi.grid.options.useExternalPagination) {
this.paginationOptions.pageNumber = newPage;
this.paginationOptions.pageSize = pageSize;
getStuff()
}
});
中的更多信息