You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kendo().Grid()语法移除Kendo Grid列菜单Lock选项的方法

嘿,我来帮你搞定这个Kendo Grid列菜单的问题~

首先给你推荐最省心的方案:直接通过Kendo Grid的配置项就能移除Lock/Unlock选项,根本不用额外写JS函数,这也是官方推荐的方式,分两种场景:

1. 整个网格都禁用列锁定功能

如果你的网格所有列都不需要锁定,直接在Grid的配置里加上.Lockable(false)就行,这样列菜单里的Lock和Unlock选项会直接消失:

@(Html.Kendo().Grid(Model.MyModel)
    .Name("myGrid")
    .Lockable(false) // 关键配置:禁用全局列锁定
    .Columns(columns => {
        columns.Bound(p => p.Id);
        columns.Bound(p => p.Name);
        // 其他列定义...
    })
    // 其他网格配置(分页、排序等)...
)

2. 只针对特定列禁用锁定

如果只是部分列不需要Lock/Unlock选项,在对应列的配置里加.Lockable(false)就可以:

.Columns(columns => {
    columns.Bound(p => p.Id).Lockable(false); // 这个列的菜单不会显示Lock/Unlock
    columns.Bound(p => p.Name); // 这个列依然保留锁定选项
})

如果因为某些原因你一定要用JS函数来移除,那之前函数没执行大概率是因为调用时机不对——你可能在网格还没渲染完成、列菜单元素还没生成的时候就执行了函数。你可以通过绑定网格的columnMenuOpen事件来确保函数在菜单打开时触发,此时元素已经存在:

第一步,在Grid配置里绑定事件:

@(Html.Kendo().Grid(Model.MyModel)
    .Name("myGrid")
    .Events(events => events.ColumnMenuOpen("removeLockOption")) // 绑定菜单打开事件
    // 其他配置...
)

第二步,写对应的JS函数:

function removeLockOption(e) {
    // 找到菜单里的Lock选项并移除
    e.container.find(".k-menu-item:contains('Lock')").remove();
    // 如果需要移除Unlock,再加这一行:
    // e.container.find(".k-menu-item:contains('Unlock')").remove();
}

这样每次打开列菜单时,函数都会执行,准确移除对应的选项。

内容的提问来源于stack exchange,提问作者gene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:35:24