angular-ui ng-grid如何使聚合行成为可编辑的行

时间:2013-07-29 20:08:04

标签: angularjs angular-ui ng-grid

我认为我想要实现的目标是在tree-like内部ng-grid。我没有找到这样的实现,但我想知道我是否可以使用分组机制

grid example

我需要以与下面的行相同的方式编辑组标题(参见上图),具有完全相同的可编辑单元格,充当主行。从标题组更新一个单元格时,应更新该组下面的所有单元格。

来自ng-grid docs http://angular-ui.github.io/ng-grid/

aggregateTemplate的默认值:

    <div ng-click="row.toggleExpand()" ng-style="{'left': row.offsetleft}" class="ngAggregate">
        <span class="ngAggregateText">{{row.label CUSTOM_FILTERS}} ({{row.totalChildren()}} {{AggItemsLabel}})</span>
        <div class="{{row.aggClass()}}"></div>
    </div>

是否可以使用此选项来呈现我描述的聚合行?

1 个答案:

答案 0 :(得分:1)

以下答案/评论与树状结构有关,与制作聚合行可编辑无关......

如果您正在寻找ng-grid中的树状结构,那么您可以通过ng-ifng-click和更新ng-grid data的API的组合实现这一目标点击特定行的选项。以下是plnkr示例。

单击父行时,将调用切换函数以将子行添加/删除到ng-grid data。 (有关完整的详细信息,请参阅我的plunker代码)

$scope.toggleDisplay = function(iType) {
  $scope.displayItemDetails[iType] = $scope.displayItemDetails[iType] ? 0 : 1;
  $scope.selItems = $scope.updateTable();
};


$scope.updateTable = function() {
  var selItems = [];
  for (var i in $scope.allItems) {
    var iType = $scope.allItems[i]["Type"];

    if (angular.isUndefined($scope.displayItemDetails[iType])) {
      $scope.displayItemDetails[iType] = 0;
    }

    if (1 == $scope.displayItemDetails[iType]) {
      $scope.allItems[i]["Summary"] = '-';
    } else {
      $scope.allItems[i]["Summary"] = '+';
    }
    selItems.push($scope.allItems[i]);

    if ($scope.displayItemDetails[iType]) {
      for (var j in $scope.allItems[i]["Details"]) {
        $scope.allItems[i]["Details"][j]["Summary"] = "";
        selItems.push($scope.allItems[i]["Details"][j]);
      }
    }

  }
  return selItems;
};

$scope.gridOptions = {
  data: 'selItems',
  columnDefs: [{
    field: 'Summary',
    displayName: '',
    cellTemplate: summaryCellTemplate,
    width: 30
  }, {
    field: 'Name',
    displayName: 'Name',
  }, {
    field: 'Type',
    displayName: 'Type',
  }, {
    field: 'Cost',
    displayName: 'Cost',
  }, {
    field: 'Quantity',
    displayName: 'Quantity',
  }],
  enableCellSelection: false,
  enableColumnResize: true
};