【问题标题】:two column with same grouping priority in ui-gridui-grid中具有相同分组优先级的两列
【发布时间】:2017-04-13 20:51:18
【问题描述】:

也许我的问题标题不正确,请随时更新我的​​标题。

我的 json 数据是这样的

    [
        { "AutoId": 2, "CustomerId": "1000AIRLIESST", "customerLastName": "John", "locationId": "2", "Address": "1000   AIRLIES ST Winnipeg " },
        { "AutoId": 2, "CustomerId": "1000AIRLIESST", "customerLastName": "John", "locationId": "186471", "Address": "1000 Airlies ST Winnipeg " },
        { "AutoId": 2, "CustomerId": "1000AIRLIESST", "customerLastName": "John", "locationId": "186752", "Address": "111   pineview rd ST Winnipeg " }
    ];

您可以看到 autoId、customerId 和 lastname 是相同的。我想在 ui-grid 中演示这些数据,如下图所示。我希望我的数据的公共部分出现在主列中。

【问题讨论】:

  • 使用ng-repeat它的简单模式。将您的数据放在范围内并在表格或其他内容中重复。
  • 是的,这是第一个解决方案,但我也想使用 ui-grid。无论如何谢谢
  • 我认为您必须先在控制器中详细说明数据,然后将其传递给您的视图,您可以迭代原始数据,然后创建一个新数组来传递视图。
  • 错过了 ui 网格部分。 cesar 是正确的,以您想要的形式获取数据,然后传递给网格。
  • 我认为数据格式很好,因为现在我可以根据customerId对其进行分组并且效果很好。问题是我不能把姓氏放在分组行中

标签: angularjs grouping angular-ui-grid


【解决方案1】:

不可能对具有相同分组优先级的两列进行分组

groupPriorities 通常应该是连续的,如果不是,那么下次调用 getGrouping 时,我们会将它们重新编号为连续的。 默认为未定义。

所以我的解决方案就像作弊一样。首先,我对第二列(customerLastname)使用聚合函数(max)。然后我使用自定义指令来操作数据。 你可以在plunker看到结果

ui-grid的列定义

  $scope.gridOptions = {
        enableFiltering: true,
        treeRowHeaderAlwaysVisible: false,
        columnDefs: [
                 {
                     name: 'customerLastName',
                     displayName: 'Customer LastName',
                     width: 200,
                     treeAggregationType: uiGridGroupingConstants.aggregation.MAX,
                     cellTemplate: '<div class="ui-grid-cell-contents" > <fakemax val="{{COL_FIELD}}" /></div>'

                 },
                 {
                     name: 'Address',
                     width: 200,
                 },

                {
                    name: 'CustomerId',
                    grouping: { groupPriority: 0 },
                    sort: { priority: 0, direction: 'desc' },
                    width: 200,
                    cellTemplate: '<div><div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null ||' +
                        ' ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents" title="TOOLTIP">{{COL_FIELD CUSTOM_FILTERS}}</div></div>'
                },
        ],
        data: 'Customers',
        onRegisterApi: function (gridApi) {
            $scope.gridApi = gridApi;
        }

    }; 

请注意我在 customerLastName 的 cellTemplate 中使用的 fakemax 指令。自定义指令就是这么简单。

app.directive('fakemax', function () {
    return function(scope, iElement, iAttrs) {
        var value = iAttrs.val;
        value = value.replace("max:", "");
        iElement[0].innerHTML = value;
    }
});

【讨论】:

  • 谢谢,我不敢相信他们仍然不允许多个顶级(或“n”级)组。不过,您的解决方案解决了我的问题。
  • plunkr 似乎不再加载,请再次查看您的帖子..
  • 是的,现在可以了.. 可能 plunkr 在我尝试时已关闭.. 无论如何谢谢.. 是否可以在一个字段上分组并为另一个字段获取价值?
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多