我有一个客户端在进行排序时特别不喜欢列标题中的下一个数字。这基于UI-Grid的多重排序,它为每列提供了编号优先级。有没有办法禁用多重排序,以删除这些数字?我仍然希望保持激活排序,但一次只能在一列上。 感谢。
答案 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"
这是最新版本。不需要复杂的脚本。