Предотвратить перемещение / перестановку колонки

Я использую 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;
    });
}]);

где я хочу добиться следующего:

  1. первые 3 столбца, которые будут закреплены слева
  2. Я хочу иметь возможность перемещать / переставлять другие не закрепленные столбцы, перетаскивая их

Я смог добиться обоих.

Однако я не смог ОСТАНОВИТЬ / предотвратить перетаскивание столбцов, которые закреплены. Как я могу предотвратить перетаскивание определенных столбцов?

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: правда };

Другие вопросы по тегам