移动后,在angularjs ui-grid中重置列顺序

时间:2017-01-11 04:11:16

标签: angularjs angular-ui-grid ui-grid

我有一个使用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中的表现非常糟糕。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

这可以通过修改grid.moveColumns.orderCache数组来完成。这不是一个记录的公共API,因此应谨慎使用此解决方案。

<?php echo 'foobar' ?>

请点击此处查看完整示例 - http://plnkr.co/edit/x0ogsvQhj6kpLVqcxPhF?p=preview