Подтвердить что ты не робот

Изменить видимость столбцов ui-grid angular

Я хочу показать/скрыть столбцы после рендеринга сетки. До того, как я перешел на новую ui-сетку Я позвонил в toggleVisible(), но теперь он не работает. Я попытался изменить видимость столбца (или любое другое свойство), например, ниже.

columnDefs[9].visible = false;

Когда я устанавливаю видимость в определении столбца (перед рендерингом), он работает, но после wards я не могу его изменить.

4b9b3361

Ответ 1

Старый вопрос, но это работает для меня в 3.0.0-rc.20. Я предполагаю, что columnDefs должен быть в области.

$scope.columnDefs = [ 
    { name: 'one' },
    { name: 'two', visible: false }
];

$scope.grid = {
    data: 'data',
    columnDefs: $scope.columnDefs
};

$scope.grid.onRegisterApi = function(gridApi){
    $scope.gridApi = gridApi;
};    

$scope.showColumnTwo = function() {
    $scope.columnDefs[1].visible = true;
    $scope.gridApi.grid.refresh();
};

Ответ 2

Просто начал работать с angular-ui-grid, поэтому это может быть не лучшее решение.

Попробуйте включить api-объект uiGrid и затем вызывать метод refersh для объекта grid

...
$scope.gridOptions.onRegisterApi = function(gridApi){
  $scope.gridApi = gridApi;
};
....
columnDefs[9].visible = false;
$scope.gridApi.grid.refresh();

Ответ 3

В случае, если кто-то искал решение, которое не требовало создания columndDef.

 s.gridOptions = {
    data: 'myData',
    onRegisterApi: function(gridApi) {
      gridApi.core.registerColumnsProcessor(hideIdColumn);
      s.gridApi = gridApi;

      function hideIdColumn(columns){
          columns.forEach(function(column){
            if(column.field==='_id'){
              column.visible=false;
            }
          });
          return columns;
      }

    }

Просто замените column.field === '_ id' частью вашего собственного условия. Также не забывайте возвращать столбцы, иначе вы не получите никаких столбцов.