我正在使用 ui-grid - v3.0.0-rc.22 - 2015-06-15。
它被配置为使用外部排序,效果很好。
现在我需要使用选择框从外部更改排序列。每次更改选择框时,它都会触发外部排序,并且网格中的数据会正确更新。它还更新 gridOptions.columnDefs:它将除正确列之外的所有列的排序对象设置为未定义,并更新已排序的列。
但有一个问题,当前排序的列指示器(在列标题中)没有按应有的方式更新。
我尝试使用 gridApi.core.notifyDataChange() 和“选项”或“列”作为参数值,但它也不起作用。
如何以编程方式更新 ui-grid 中的排序指示器?
这是由选择框触发的部分代码:
function updateSortColumn() {
if ($rootScope.QuickSearch.sortBy !== undefined) {
$scope.gridOptions.columnDefs.forEach(function (col) {
if (col.field === $rootScope.QuickSearch.sortBy) {
col.sort = {
direction: $rootScope.QuickSearch.sortOrder,
priority: 0
};
}
else
{
col.sort = undefined;
}
});
}
if($scope.gridApi !== undefined)
{
$scope.gridApi.core.notifyDataChange( uiGridConstants.dataChange.OPTIONS );
$scope.gridApi.core.notifyDataChange( uiGridConstants.dataChange.COLUMN );
}
}
您可以使用 ui-grid 的函数“sortColumn”,如下所示:
$scope.gridApi.grid.sortColumn(column, directionOrAdd, add)
这是该函数的源代码:ui-网格源代码 https://github.com/angular-ui/ui-grid/blob/f5961286a9f5a21be4c4314252ecf3571ecf28bf/src/js/core/factories/Grid.js
在你的例子中它会给出这样的东西:
function updateSortColumn() {
if ($rootScope.QuickSearch.sortBy !== undefined) {
$scope.gridOptions.columnDefs.forEach(function (col) {
if (col.field === $rootScope.QuickSearch.sortBy) {
$scope.gridApi.grid.sortColumn(col,$rootScope.QuickSearch.sortOrder);
}
});
}
}
$rootScope.QuickSearch.sortOrder 必须位于 (uiGridConstants.ASC|uiGridConstants.DESC) 中。您不必提供它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)