在剑道网格中只为一列启用列菜单,并在页面加载时默认隐藏特定列



我只想为剑道网格的一个特定列中的列提供列菜单选项。此外,当页面加载时,我希望显示一个特定列并隐藏其他列。用户可以从其中一列中提供的列菜单选项中选择其他(隐藏(列。

我做了这样的事情来隐藏某些列的列菜单:

<body>
<div id="example">
<div id="grid"></div>
<script>
$(document).ready(function () {
$("#grid").kendoGrid({
dataSource: {
type: "odata",
transport: {
read: "//demos.telerik.com/kendo-ui/service/Northwind.svc/Orders"
},
schema: {
model: {
fields: {
OrderID: { type: "number" },
ShipCountry: { type: "string" },
ShipName: { type: "string" },
ShipAddress: { type: "string" }
}
}
},
pageSize: 30,
serverPaging: true,
serverFiltering: true,
serverSorting: true
},
height: 550,
pageable: true,
columnMenu: true,
columns: [{
field: "OrderID",
title: "Order ID",
width: 120
}, {
field: "ShipCountry",
title: "Ship Country"
}, {
field: "ShipName",
title: "Ship Name"
}, {
field: "ShipAddress",
filterable: false
}
]
});
});
$(function(){
$('#grid .k-header-column-menu').eq(0).hide();
$('#grid .k-header-column-menu').eq(1).hide();
$('#grid .k-header-column-menu').eq(2).hide();
})
</script>
</div>
</body>

有没有更好的方法来实现这两个功能?

我也有类似的请求,但我并没有把列菜单放在一列中,而是把它放在工具栏部分的外部,此外我还在同一模板中添加了导出按钮。

var toolbarTemplate = '<div id="column-menu-button" style="float:left" ></div>';
var templ = '<div class="toolbar buttons-wrap" style="text-align: right;"><div id="toolbar"></div></div>';

var grid = $("#grid").kendoGrid({
toolbar: kendo.template(templ),
columns: [
{field: "name", menu: true, hidden: true},
{field: "age", menu: false}
],
sortable: true,
dataSource: [
{name: "Jane Doe", age: 30},
{name: "John Doe", age: 33}
]
}).getKendoGrid();
var createKendoColumnMenu = function (id, dataSource, owner) {
var kendoColumnMenu = $(id).kendoColumnMenu({
dataSource: dataSource,
filterable: false,
sortable: false,
columns: true,
owner: owner,
});
};
var createKendoToolBar = function (id) {
var kendoToolBar = $(id).kendoToolBar().getKendoToolBar();
return kendoToolBar;
};
createKendoToolBar('#toolbar').add({
template: toolbarTemplate,
id: 'column-menu',
overflow: 'never'
});
createKendoColumnMenu('#column-menu-button', grid.dataSource, grid);

查看我的示例:自定义工具栏

更改列数组以添加隐藏属性。

columns: [{
field: "OrderID",
title: "Order ID",
width: 120,
hidden: true
}, {
field: "ShipCountry",
title: "Ship Country",
hidden: true
}, {
field: "ShipName",
title: "Ship Name",
hidden: true
}, {
field: "ShipAddress",
filterable: false
}]

至于隐藏列菜单。作为一个函数,你已经有了实现它的方法。把它放在网格的数据绑定事件中可能更好,但它的工作方式应该很好。

我找到了一个只在一列中启用columnMenu选项的解决方案。基本上,我在列headerTemplate中添加了一个div元素,我想在其中启用此功能。然后,我给它附加了一个kendoColumnMenu。下面是一个例子:ColumnMenu

最新更新