我有一个使用ui-grid-move-columns指令的ui-grid。使用此指令,我可以拖放ui-grid列以更改其顺序。我希望能够将列顺序重置回原始状态。
如果没有ui-grid-move-columns指令,您可以重新排序options.columnDefs以更改列顺序。在这种情况下,更改options.columnDefs的顺序似乎没有立即生效。我发现我可以清除columnDefs,然后重新填充,但是这会导致其他问题,而且看起来有点hacky(例如请参阅plunker http://plnkr.co/edit/JUqzefRKJgoF0VQXrffa?p=preview):
$scope.reset = function(){
var columnDefs = $scope.gridOptions.columnDefs;
var columnDefsBak = columnDefs.slice();
columnDefs.length = 0;
$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN );
columnDefs.push.apply(columnDefs, columnDefsBak)
$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN );
}
我也尝试过使用ui.grid.moveColumns.moveColumn(originalPosition,finalPosition)API(http://ui-grid.info/docs/#/api/ui.grid.moveColumns.api:PublicApi),然后重新排序所有内容,但对于宽表(约20列,需要移动19)他们在FF和IE中的表现非常糟糕。
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
这可以通过修改grid.moveColumns.orderCache数组来完成。这不是一个记录的公共API,因此应谨慎使用此解决方案。
<?php echo 'foobar' ?>
请点击此处查看完整示例 - http://plnkr.co/edit/x0ogsvQhj6kpLVqcxPhF?p=preview