Предотвратить перемещение / перестановку колонки
Я использую UI Grid. У меня есть PLNKR здесь
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.pinning', 'ui.grid.moveColumns']);
app.controller('MainCtrl', ['$scope', '$http', '$log', function ($scope, $http, $log) {
$scope.gridOptions = {};
$scope.gridOptions.columnDefs = [
{ name:'id', width:50, pinnedLeft:true },
{ name:'name', width:100, pinnedLeft:true },
{ name:'age', width:100, pinnedLeft:true },
{ name:'company', width:100},
{ name:'address.street', width:150 },
{ name:'address.city', width:150 },
{ name:'address.state', width:50 },
{ name:'address.zip', width:50 },
{ name:'email', width:100 },
{ name:'phone', width:200 },
{ name:'about', width:300 },
{ name:'friends[0].name', displayName:'1st friend', width:150 },
{ name:'friends[1].name', displayName:'2nd friend', width:150 },
{ name:'friends[2].name', displayName:'3rd friend', width:150 },
];
$scope.gridOptions.jqueryUIDraggable= false;
$http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
.success(function(data) {
$scope.gridOptions.data = data;
});
}]);
где я хочу добиться следующего:
- первые 3 столбца, которые будут закреплены слева
- Я хочу иметь возможность перемещать / переставлять другие не закрепленные столбцы, перетаскивая их
Я смог добиться обоих.
Однако я не смог ОСТАНОВИТЬ / предотвратить перетаскивание столбцов, которые закреплены. Как я могу предотвратить перетаскивание определенных столбцов?
2 ответа
Решение
В app.js попробуйте добавить enableColumnMoving:false в columnDefs следующим образом:
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.pinning', 'ui.grid.moveColumns']);
app.controller('MainCtrl', ['$scope', '$http', '$log', function ($scope, $http, $log) {
$scope.gridOptions = {};
$scope.gridOptions.columnDefs = [
{ name:'id', width:50, pinnedLeft:true, enableColumnMoving:false },
{ name:'name', width:100, pinnedLeft:true, enableColumnMoving:false },
{ name:'age', width:100, pinnedLeft:true, enableColumnMoving:false },
{ name:'company', width:100},
{ name:'address.street', width:150 },
{ name:'address.city', width:150 },
{ name:'address.state', width:50 },
{ name:'address.zip', width:50 },
{ name:'email', width:100 },
{ name:'phone', width:200 },
{ name:'about', width:300 },
{ name:'friends[0].name', displayName:'1st friend', width:150 },
{ name:'friends[1].name', displayName:'2nd friend', width:150 },
{ name:'friends[2].name', displayName:'3rd friend', width:150 },
];
$http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
.success(function(data) {
$scope.gridOptions.data = data;
});
}]);
Лучшее решение семь лет спустя — подавитьMovable:true в столбце def.
Для всех столбцов:
public defaultColDef: ColDef = { сортируемый: ложь, фильтр: ложь, изменяемый размер: правда, подавлениеMovable: правда };