Панель инструментов Колонка Меню в сетке кендо с использованием угловых js

Как разместить меню столбцов на панели инструментов сетки кендо, чтобы выбрать столбцы по необходимости?

dataSource: $scope.kDisplayReceivedOrders,
            toolbar: ["save", "cancel",
                {
                    template:
                        '<button class="k-button k-button-icontext " ng-click="confirmReceivedOrder()" >Confirm</button>' +
                        '<button class="k-button "  ng-click="printReceivedOrderDetails()">Print</button>'
                }
            ],

1 ответ

Вы не можете вставить columnMenu из сетки Kendo на панель инструментов, потому что Kendo добавляет ее в текущую сетку.

Но то, что вы могли бы сделать, это самостоятельно реализовать поведение этого меню внутри вашей собственной панели инструментов. Я сделал это недавно для проекта.

Что я сделал:

  • Угловой компонент.
  • При нажатии на компонент я читаю какие столбцы видны.
    • Я делаю это через .getOptions() а затем проверять columns свойство объекта возвращено. Невидимые столбцы будут иметь hidden=true,
  • Затем в шаблоне я показываю все столбцы с флажком для переключения видимости.
  • hideColumn() а также showColumn() должен быть прикреплен к действию проверки или снятия флажка.

Угловой компонент контроллера:

init() {
 if(this.grid)
  this.columns = getColumns(this.grid.getOptions().columns);
}

checkbox(column) {
  column.visible === true ? this._objectViewService.grid.showColumn(column.field) : this._objectViewService.grid.hideColumn(column.field);
}

Метод преобразования из кендо по умолчанию в мою систему визуализации:

function getColumns(columns) {
 let cols = [];
 columns.forEach(column => cols.push({title: column.title, field:   column.field, visible: column.hidden !== undefined ? !column.hidden : true}));
 return cols;
}

Шаблон:

<div class="columnDropdownComponent">
 <p class="title" ng-mouseover="$ctrl.init()">
  <button>Columns<span class="icon-navigation-down"></span></button>
 </p>
 <div class="dropdown">
  <div class="group">
   <label ng-repeat="column in $ctrl.columns" ng-class="{'checked': column.visible}">
    {{column.title}}
   <input type="checkbox" ng-model="column.visible" ng-click="$ctrl.checkbox(column)">
  </label>
 </div>
</div>

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