如何在ui-grid中禁用多列排序

时间:2015-11-17 16:30:41

标签: angular-ui-grid

我有一个客户端在进行排序时特别不喜欢列标题中的下一个数字。这基于UI-Grid的多重排序,它为每列提供了编号优先级。有没有办法禁用多重排序,以删除这些数字?我仍然希望保持激活排序,但一次只能在一列上。 感谢。

4 个答案:

答案 0 :(得分:3)

我自己也遇到过这个问题。如果仔细查看ui0grid.js代码,您会发现(此时)没有选项可以将其删除。 ui-grid的作者表示他们欢迎在this thread

中请求这样的功能

但是,你需要修复,而不是承诺; - )

您可以发现sortChanged方法中选择了多少个sortColumns。

尝试这样的事情:

$scope.gridOptions.onRegisterApi = function(gridApi) {
    $scope.gridApi = gridApi;

    // Register a handler that is fired everytime someone changd the sort params.
    $scope.gridApi.core.on.sortChanged($scope, function(grid, sortColumns) {
        if (sortColumns.length > 1) {
            // We have more than one sort. Kill the first one.
            // If this works we'll only ever have 0, 1 or 2 sortColumns,
            // and only ever 2 for the lifetime of this method.
            var column = null;
            for (var j = 0; j < grid.columns.length; j++) {
                if (grid.columns[j].name === sortColumns[0].field) {
                    column = grid.columns[j];
                    break;
                }
             }
             if (column) {
                 sortColumns[1].sort.priority = 1; // have to do this otherwise the priority keeps going up.                           
                 column.unsort();
             }
         }
    });
};

这是针对ui-grid的3.0.0版本。

HTH

答案 1 :(得分:0)

为防止在多列上进行排序,我在 Grid.prototype.sortColumn 函数 ui-grid.js 文件中添加了这两行。

self.resetColumnSorting(column);
column.sort.priority = undefined;

对我有用..

答案 2 :(得分:0)

我想将多个排序列限制为最多2个。这就是我的做法。

$scope.gridOptions.onRegisterApi = function(gridApi) {
$scope.gridApi = gridApi;

$scope.gridApi.core.on.sortChanged($scope, function(grid, sortColumns) {
    if (sortColumns.length == 3) {
      //limit multi column sort to max 2 columns
      for (var j = 0; j < grid.columns.length; j++) {
        if (grid.columns[j].name === sortColumns[2].name) {
          grid.columns[j].sort = {};
          break;
        }
      }
     return;
    });
};

答案 3 :(得分:0)

看起来现在在 HTML 元素中支持:

[suppressMultiSort]="true"

这是最新版本。不需要复杂的脚本。