如何在列表网格的工具栏中放置列菜单以根据需要选择列?
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>'
}
],
答案 0 :(得分:0)
您无法在工具栏中插入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);
}
从kendo默认值转换为我的可视化系统的方法:
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>