Angularjs 角度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

我正在使用UI网格显示一些数据。其中一列是文本,所以我有“contains”过滤,效果非常好

我也在使用分页。UI网格的右角显示如下内容:

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;