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

如何在多选模式的KendoUI Grid中反转当前行选中状态?

KendoUI Grid多选模式下反转行选中状态的实现方法

核心思路

通过KendoUI Grid的API获取当前所有行及已选中行的标识,遍历每一行切换其选中状态——已选中的取消选中,未选中的设置为选中。

基于DOM行的实现代码

// 获取Grid实例
var grid = $("#grid").data("kendoGrid");
// 获取所有数据行(过滤掉表头、分页行等非数据行)
var allRows = grid.tbody.find("tr[data-uid]");
// 获取已选中行的UID集合
var selectedUids = grid.select().map(function() {
    return $(this).data("uid");
}).get();

// 遍历所有行,反转选中状态
allRows.each(function() {
    var row = $(this);
    var uid = row.data("uid");
    var isSelected = $.inArray(uid, selectedUids) !== -1;
    
    if (isSelected) {
        grid.clearSelection(row);
    } else {
        grid.select(row);
    }
});

基于数据项的实现代码

如果需要结合数据源操作,也可以通过数据项的UID定位行并切换状态:

var grid = $("#grid").data("kendoGrid");
// 获取数据源中所有数据项
var allDataItems = grid.dataSource.data();
// 获取已选中的数据项
var selectedItems = grid.selectedItems();
// 转换为UID集合
var selectedUids = $.map(selectedItems, function(item) {
    return item.uid;
});

// 遍历数据项,对应切换行的选中状态
allDataItems.forEach(function(item) {
    var row = grid.table.find("tr[data-uid='" + item.uid + "']");
    if ($.inArray(item.uid, selectedUids) !== -1) {
        grid.clearSelection(row);
    } else {
        grid.select(row);
    }
});

注意事项

  • 确保代码在Grid初始化完成后执行,比如绑定到按钮点击事件,或者Grid的dataBound回调中
  • 如果Grid启用了分页,上述方法仅处理当前页的行。若要操作所有页数据,需先遍历所有分页获取数据,完成操作后再刷新Grid的选中状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:25:23