Angularjs 角度UI网格:如何获得过滤后的总项目数
我正在使用UI网格显示一些数据。其中一列是文本,所以我有“contains”过滤,效果非常好 我也在使用分页。UI网格的右角显示如下内容:Angularjs 角度UI网格:如何获得过滤后的总项目数,angularjs,visible,angular-ui-grid,Angularjs,Visible,Angular Ui Grid,我正在使用UI网格显示一些数据。其中一列是文本,所以我有“contains”过滤,效果非常好 我也在使用分页。UI网格的右角显示如下内容: 1-23(共23项) 在我的页面功能(角度控制器端)中,我需要返回项目总数,特别是该行的最后一个“23”。我在文档中找不到除此之外的任何内容(从文档中): GridOptions(模块ui.grid.pagination中的api) 总计项目 需要在客户端分页时自动设置的项目总数 由用户为服务器端分页设置“ 因此,我尝试使用$scope.gridOption
1-23(共23项)
在我的页面功能(角度控制器端)中,我需要返回项目总数,特别是该行的最后一个“23”。我在文档中找不到除此之外的任何内容(从文档中):
GridOptions(模块ui.grid.pagination中的api)
总计项目
需要在客户端分页时自动设置的项目总数
由用户为服务器端分页设置“
因此,我尝试使用$scope.gridOptions.totalItems
,但不幸的是,当页面首次加载时,它总是返回0
我的解决方法是使用data.length,这将满足我的需要。经过进一步测试,尽管我意识到在使用筛选后,分页页脚上的项目总数将更改为匹配结果的总和。我没有找到其他方法来获取该数字
还有一件事:
过滤完成后是否有触发的事件,以便我可以检查$scope.gridOptions.totalItems
有什么想法吗?
提前感谢:)
获取您的全部项目:
var totalItems = $scope.gridApi.grid.options.totalItems;
您可以使用此解决方法
var RowsVisible=$(“.ui网格行”).length;
如果存在分组,则使用此
var RowsVisible=$(“.ui网格行”).length/2;
这将显示当前的行数。如果存在分组,则将显示标题数和可见行数。您应该避免使用jQuery(正如另一篇文章所建议的),而是与API交互
首先需要在grids creation事件中保存对API的引用
$scope.gridOptions = {
....
onRegisterApi: registerGridApi,
....
};
function registerGridApi(gridApi) {
$scope.gridApi = gridApi;
}
您应该已经知道行的总数
您可以通过以下方法获得可见/过滤行数:
gridApi.core.getVisibleRows().length
gridApi.selection.getSelectedRows().length
或
您可以通过以下方式获得所选行数:
gridApi.core.getVisibleRows().length
gridApi.selection.getSelectedRows().length
getVisibleRows()将返回可见行数。如果展开分组,getVisibleRows()的大小将相应增加
$scope.gridApi.core.getVisibleRows().length;
因此,上述方法有一些限制
您还可以使用以下方法获得总分组行数
var totalGroupedRows = Object.keys($scope.gridApi.grid.grouping.groupingHeaderCache).length ;
注意Object.keys()将不起作用IE在我们的应用程序中,我们在页脚中显示了一些列。它与列筛选器不起作用。然后,我们执行了以下步骤,它就起作用了
i.$scope.gridOptions = {
columnDefs: $scope.columnDefs,
onRegisterApi: function(gridApi) {
$scope.gridApi = gridApi;
}
ii. calling below template in the footer
footerCellTemplate: '<div class="footer-class" style="text-align:right;margin-right: 5px;" >{{grid.appScope.getTotalofcolumn(grid) | currency:number:0}}</div>',
iii. inside getTotalofcolumn used below line for rows
$scope.gridApi.core.getVisibleRows();
$scope.totalValues =$scope.gridApi.core.getVisibleRows();
$scope.Total = 0
angular.forEach($scope.totalValues,function(value,key){
$scope.Total += value.entity.TotalCOLUMNVALUE/NAME;
});
return $scope.Total;
i.$scope.gridOptions={
columnDefs:$scope.columnDefs,
onRegisterApi:函数(gridApi){
$scope.gridApi=gridApi;
}
ii.在页脚中调用下面的模板
footerCellTemplate:“{{grid.appScope.getTotalofcolumn(grid)|货币:编号:0}}”,
iii.行下使用的内部getTotalofcolumn
$scope.gridApi.core.getVisibleRows();
$scope.totalValues=$scope.gridApi.core.getVisibleRows();
$scope.Total=0
angular.forEach($scope.totalValues,函数(值,键){
$scope.Total+=value.entity.TotalCOLUMNVALUE/NAME;
});
返回$scope.Total;