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

如何在ASP.NET MVC中用JS和jQuery取消Kendo Grid指定行选中状态

解决Kendo Grid选中状态同步问题

要同时更新UI和Grid内部的选中集合,不能只修改checkbox的DOM状态,必须调用Kendo Grid提供的官方方法来取消选中。以下是可行的实现方案:

核心思路

  • 使用grid.unselect(row)方法:这是Kendo Grid内置的取消选中方法,会自动同步select()、selectedKeyNames()以及内部_selectIds的状态
  • 倒序遍历选中行:避免移除行后数组索引错乱
  • 通过行数据对象判断条件:从绑定的数据中获取字段,比操作DOM更可靠

完整代码示例

function onChange(e) {
    var grid = this;
    var selectedRows = grid.select();
    
    // 倒序遍历,防止移除元素后索引错位
    for (var i = selectedRows.length - 1; i >= 0; i--) {
        var row = selectedRows[i];
        // 获取当前行绑定的数据对象
        var dataItem = grid.dataItem(row);
        
        // 替换为你的实际判断条件,比如根据数据字段判断
        var condition = dataItem.SomeField === true; 
        
        if (condition) {
            // 调用官方方法取消选中,同步内部状态
            grid.unselect(row);
            // 手动同步checkbox状态(unselect通常会自动处理,可选)
            $(row).find("input[type='checkbox']").prop('checked', false);
            alert("You can't select this");
        }
    }
}

关键说明

  1. 避免仅操作DOM:直接修改checkbox的checked属性只会改变UI,不会更新Grid内部维护的选中集合,导致select()等方法仍返回已取消选中的行。
  2. unselect()方法的作用:该方法会同时完成以下操作:
    • 从select()返回的选中行集合中移除该行
    • 更新selectedKeyNames()返回的键数组
    • 清理内部_selectIds属性中的对应ID
  3. 倒序遍历的必要性:如果正序遍历并移除元素,数组长度会动态变化,后续循环的索引会指向错误的行,倒序遍历则不会出现这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:42:34