【问题标题】:Disable/Enable Grouping in ui-grid在 ui-grid 中禁用/启用分组
【发布时间】:2016-09-16 15:47:16
【问题描述】:

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

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

getGroupIdColumn 是:

    $scope.getGroupIdColumn = function () {
        var result = new Object();
        result["name"] = 'GroupID';
        result["visible"] = false;
        result["type"] = 'number';
        if ($scope.groupingEnabled) {
            console.log("komt toch: " + $scope.speedDial.grouping);
            var grObj = new Object();
            grObj["groupPriority"] = 0;
            result["grouping"] = grObj;
            return result;
        }
        return result;
    }

其他列定义也是这样。

如果groupingEnabled 为真,我有分组。如果为假,则不分组。到这里为止,它都是例外的。

但是

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

应该怎么做?

PS:gridApi.core.refresh(), $evalAsync().. 都试过了,没有任何改善。

【问题讨论】:

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


    【解决方案1】:

    我简直不敢相信它这么容易!我将编写我的函数,以便人们更容易上手:(这里也是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();
      }
      

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        • 2013-02-13
        • 1970-01-01
        • 2015-08-05
        相关资源
        最近更新 更多