您不能从工具栏中的 Kendo 网格插入 columnMenu,因为 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>