You need to enable JavaScript to run this app. ASP.NET MVC中Kendo UI Grid获取Project列筛选值自动填充新增弹窗
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中Kendo UI Grid获取Project列筛选值自动填充新增弹窗

实现方案

该需求完全可以实现,不需要改动现有Kendo Grid的核心配置,直接利用你已经为Grid绑定的Edit("onPopOpen")弹窗事件钩子就能完成。

实现逻辑

  • 弹窗打开时先判断当前操作是否为新增记录模式,编辑存量数据时跳过自动填充逻辑,避免覆盖原有行的绑定值
  • 从Grid数据源的当前筛选规则中,提取Project列(对应绑定字段ProjectID_FK)的筛选取值
  • 将提取的取值同步写入新增记录的模型字段,同时更新弹窗内Project下拉框的选中状态,保证数据和界面显示一致
  • 全流程增加边界判断:无任何筛选、未针对Project列设置筛选的场景直接放行,不干扰原有功能

具体代码

补全你已经预留的onPopOpen函数即可:

function onPopOpen(e) {
    // 仅处理新增场景,编辑已有数据时不执行自动填充
    if (!e.model.isNew()) {
        return;
    }
    // 获取当前Grid实例
    const grid = $("#grid").data("kendoGrid");
    // 读取Grid当前生效的筛选规则
    const currentFilter = grid.dataSource.filter();
    // 无有效筛选时直接跳过
    if (!currentFilter?.filters?.length) {
        return;
    }
    // 匹配Project列的筛选规则
    const projectFilter = currentFilter.filters.find(item => item.field === "ProjectID_FK");
    // 未对Project列设置筛选时直接跳过
    if (!projectFilter) {
        return;
    }
    const targetProjectId = projectFilter.value;
    // 给新增的空模型赋值Project字段
    e.model.set("ProjectID_FK", targetProjectId);
    // 同步弹窗内Project下拉框的选中状态
    const projectDropDown = e.container.find("[name='ProjectID_FK']").data("kendoDropDownList");
    if (projectDropDown) {
        projectDropDown.value(targetProjectId);
        // 如果需要强制用户在新增时不能修改Project的选择(适配快速新增同项目收件人的场景),打开下面注释即可
        // projectDropDown.enable(false);
    }
}

适配说明

  • 你当前配置的是行内筛选模式,且关闭了多条件筛选按钮,Project列的筛选本身为单值精确匹配,不需要额外处理复杂多条件筛选的分支逻辑
  • 所有逻辑均有兜底判断,不会影响原有编辑、新增、筛选、分页、排序的正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 22:57:10