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

ASP.NET MVC Kendo Grid下拉框联动更新单元格值问题求助

解决ASP.NET MVC Kendo Grid中Exception选择"No"时清空ExceptionType的问题

问题根源

原代码存在几个关键问题导致功能失效:

  • 直接通过$("#Exception")获取下拉框,在InCell编辑模式下,编辑器是动态生成的,每个行的编辑器会带有行标识后缀,无法准确定位当前编辑的下拉框。
  • 修改currentItem["ExceptionType"]=""后,未触发数据源的变更通知,也没有刷新单元格的UI显示,Batch模式下数据项的直接修改不会自动同步到界面。
  • 依赖grid.select()获取当前行不可靠,InCell编辑时当前行应该从编辑器所在的DOM元素定位。

修正后的实现代码

1. 更新assignExceptionValue JavaScript函数

assignExceptionValue: function (e) {
    // 获取当前触发事件的下拉框
    var dropdown = e.sender;
    // 获取当前编辑的行
    var currentRow = dropdown.element.closest("tr");
    var grid = $("#gridIssExcpListQueryResult").data("kendoGrid");
    var currentItem = grid.dataItem(currentRow);

    if (!currentItem) return;

    var selectedVal = dropdown.value();
    if (selectedVal === "N") {
        // 使用数据源的set方法更新字段,触发变更通知
        currentItem.set("ExceptionType", "");
        // 刷新ExceptionType单元格的UI,确保显示清空后的值
        grid.refreshRow(currentRow);
    }
}

2. 确认编辑器模板的事件绑定

Exception的编辑器模板无需额外修改,确保Change事件绑定正确即可:

@model string

@(Html.Kendo().DropDownList()
     .Name("Exception")
     .HtmlAttributes(new { style = "width:100px;" })
     .DataTextField("Text")
     .DataValueField("Value")
     .BindTo(new List<PccNet.Infra.Common.ListItem>() {
         new PccNet.Infra.Common.ListItem(){ Text="Yes", Value="Y" },
         new PccNet.Infra.Common.ListItem(){ Text="No", Value="N" }
     })
     .Events(a => a.Change("PccNet.eDOC.BlException.Ux.assignExceptionValue"))
 )

关键说明

  • 使用e.sender获取当前编辑的下拉框,避免DOM选择器的定位错误。
  • 调用currentItem.set("ExceptionType", "")而非直接赋值,这会触发Kendo数据源的change事件,确保数据变更被框架追踪(尤其在Batch模式下)。
  • 调用grid.refreshRow(currentRow)强制刷新当前行,确保ExceptionType单元格立即显示清空后的状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:18:11