在ui-grid中禁用/启用分组

时间:2015-10-21 14:12:44

标签: angularjs grouping ng-grid angular-ui-grid

我有一个ui-grid,其第一列是:

src=""

其中![alt text](data:image/png;crazy-long-string-of-characters)是:

  columnDefs : [$scope.getGroupIdColumn(),
                $scope.getKlasCodeColumn(),
                $scope.getKlasNummerColumn(),
                $scope.getNaamColumn()
            ]

其他列定义也是这样的。

如果getGroupIdColumn为真,我有分组。如果为false,则不进行分组。在此之前,它可以作为例外。

BUT

如果我重新定义该列,甚至所有网格选项,它仍然保持原样。因此,如果我有一个分组的网格,并重新定义所有网格选项,我仍然有网格分组。

应该做什么?

PS:gridApi.core.refresh(),$ evalAsync()..尝试过,没有任何改进。

2 个答案:

答案 0 :(得分:2)

我简直不敢相信这么容易!我会编写我的函数,让人们更容易上手:(这里也是documentation

  1. 在$ scope中设置gridApi:

    $scope.gridOptions.onRegisterApi = function (gridApi) {
        $scope.gridApi = gridApi;
    }
    
  2. 保存您的分组信息:

    $scope.groupInfo = $scope.gridApi.grouping.getGrouping();
    
  3. 只需定义这些功能

    $scope.groupData = function () {
        if ($scope.groupInfo != undefined) {
            $scope.gridApi.grouping.setGrouping($scope.groupInfo);
        }
        setTimeout(function () {
            $scope.gridApi.treeBase.expandAllRows();
        }, 400);
        $scope.$evalAsync();
    }
    
    $scope.ungroupData = function () {
        // if ($scope.groupInfo != undefined) {
            // $scope.groupInfo = $scope.gridApi.grouping.getGrouping();
        // }
        $scope.gridApi.grouping.clearGrouping();
    }
    

答案 1 :(得分:1)

对于我的情况,我需要切换分组,我尝试了你的答案,但它对我不起作用所以我改了一下。

$scope.groupData = function () {
    $scope.gridApi.grouping.groupColumn('columnName');
    $timeout(function(){
      $scope.gridApi.treeBase.expandAllRows();
    }, 300);
}

工作示例http://plnkr.co/edit/AtcLSsqqnSaFeLfOEJhc?p=preview