我只想为kendo网格的一个特定列提供列的列菜单选项。另外,在页面加载时,我想显示一个特定的列并隐藏其他列。用户可以从列之一中提供的列菜单选项中选择其他(隐藏)列。

我已经做了类似的事情来隐藏某些列的列菜单:

<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);


检查我的示例:Custom toolbar

09-17 20:19