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

Kendo层级Grid detail模板子表格阻止name字段重复录入方案咨询

解决方案

你可以通过校验函数的input元素向上追溯动态生成的子Grid实例,无需绑定固定ID即可获取当前编辑行数据,修改子Grid中name字段的duplicate校验逻辑如下:

duplicate: function (input) {
    if (input.is("[name='name']") && input.val() != "") {
        var inputName = input.val();
        // 从input向上查找当前子Grid实例
        var childGrid = input.closest(".k-grid").data("kendoGrid");
        // 获取当前编辑行的模型数据
        var editingModel = childGrid.editable.options.model;
        // 获取当前父分组下的所有课程数据
        var currentCourses = childGrid.dataSource.data();
        var isValid = true;

        for (var i = 0; i < currentCourses.length; i++) {
            var course = currentCourses[i];
            // 排除当前编辑的行,用ID比对比name更精准,避免同名编辑时误判
            if (course.name === inputName && course.id !== editingModel.id) {
                isValid = false;
                input.attr("data-duplicate-msg", "Duplicates not allowed.");
                break;
            }
        }
        return isValid;
    }
    return true;
}

逻辑说明

  • 通过input.closest(".k-grid")定位子Grid,适配所有动态生成的层级子Grid,不需要提前指定固定ID
  • 改用ID比对排除当前编辑项,比仅比对name更稳妥,避免两条数据name相同的场景下出现校验误判
  • 修正了原有逻辑中循环从i=1开始漏掉第一条数据校验的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:27:01