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

Kendo Grid行展开/折叠背景色恢复问题:处理alt行及多网格场景

Kendo Grid 详情展开/折叠时主行背景色灵活控制方案

针对alt行、多网格默认颜色不同的问题,核心思路是缓存行的原始背景色,而非硬编码恢复值,这样能自动适配各类默认样式。

实现步骤

  1. 展开详情时缓存原始颜色并设置目标色
    在detailExpand事件中,获取当前主行,将其原始背景色存入元素的data属性,再设置展开后的背景色。

  2. 折叠详情时恢复原始颜色
    在detailCollapse事件中,取出之前缓存的原始颜色,恢复行的背景色,最后清除缓存避免冗余数据。

完整示例代码

// 初始化第一个带alt行的Grid
$("#grid1").kendoGrid({
    columns: [
        { field: "productName", title: "产品名称" },
        { field: "price", title: "价格" }
    ],
    detailTemplate: "<div>产品详情:#= productName # 单价 #= price # 元</div>",
    detailExpand: function(e) {
        const masterRow = $(e.masterRow);
        // 缓存原始背景色
        const originalBg = masterRow.css("background-color");
        masterRow.data("original-bg", originalBg);
        // 设置展开后的背景色
        masterRow.css("background-color", "#F1E5AC");
    },
    detailCollapse: function(e) {
        const masterRow = $(e.masterRow);
        // 恢复原始背景色
        const originalBg = masterRow.data("original-bg");
        if (originalBg) {
            masterRow.css("background-color", originalBg);
            masterRow.removeData("original-bg");
        }
    },
    dataSource: [
        { productName: "笔记本电脑", price: 5999 },
        { productName: "智能手机", price: 3999 },
        { productName: "平板电脑", price: 2499 }
    ],
    altRows: true
});

// 初始化第二个自定义样式的Grid
$("#grid2").kendoGrid({
    columns: [
        { field: "userName", title: "用户名" },
        { field: "role", title: "角色" }
    ],
    detailTemplate: "<div>用户详情:#= userName # 角色为 #= role #</div>",
    detailExpand: function(e) {
        const masterRow = $(e.masterRow);
        const originalBg = masterRow.css("background-color");
        masterRow.data("original-bg", originalBg);
        masterRow.css("background-color", "#F1E5AC");
    },
    detailCollapse: function(e) {
        const masterRow = $(e.masterRow);
        const originalBg = masterRow.data("original-bg");
        if (originalBg) {
            masterRow.css("background-color", originalBg);
            masterRow.removeData("original-bg");
        }
    },
    dataSource: [
        { userName: "admin", role: "管理员" },
        { userName: "editor", role: "编辑" },
        { userName: "viewer", role: "访客" }
    ],
    altRows: true,
    altRowTemplate: '<tr data-uid="#= uid #" style="background-color: #E8F4F8;"><td>#= userName #</td><td>#= role #</td></tr>'
});

关键优势

  • 自动适配alt行:无需判断行是否为alt类,直接缓存原始颜色即可恢复默认样式
  • 多网格无冲突:每个网格的行操作独立,通过e.masterRow定位当前行,不会互相干扰
  • 兼容动态数据:新增行的uid唯一,缓存逻辑对动态加载的行同样生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:03:30