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

Kendo DropDownList change事件无法获取DataValueField值求助

解决Kendo DropDownList Change事件无法获取DataValueField值的问题

我来帮你搞定这个困扰!你遇到的问题是明明设置了DataValueField为PARTNERID,但change事件里拿到的却是PARTNERNAME的文本,大概率是取值方式或数据源绑定的小问题,下面给你一步步的解决方案:

第一步:先确认数据源的正确性

首先要确保ViewBag.lstAirline里的每个对象确实包含PARTNERID和PARTNERNAME这两个属性,而且属性名的大小写要和你在DropDownList配置里写的完全一致(Kendo对大小写是敏感的!)。比如如果你的实体类里属性是PartnerId而不是PARTNERID,那Kendo就找不到值字段,会自动 fallback到文本字段返回。

如果可以的话,建议用强类型集合来绑定,比如先定义一个Airline实体:

public class Airline
{
    public int PARTNERID { get; set; }
    public string PARTNERNAME { get; set; }
}

然后在Controller里这样赋值:

ViewBag.lstAirline = yourDbContext.Airlines.ToList<Airline>();

强类型绑定能减少Kendo识别属性的错误。

第二步:修改Change事件的取值逻辑

你原来的代码里用this.value()可能因为上下文问题没有正确指向DropDownList实例,换成下面两种方式都可以:

方式一:用事件对象的sender获取实例

function MemoCarrier(e) {
    // e.sender就是当前的DropDownList实例
    var selectedPartnerId = e.sender.value();
    var selectedPartnerName = e.sender.text();
    
    alert("选中的PARTNERID:" + selectedPartnerId);
    // 可选:验证文本是否正确
    // alert("选中的PARTNERNAME:" + selectedPartnerName);
}

方式二:通过jQuery选择器直接获取实例

function MemoCarrier(e) {
    // 用Name属性的值找到下拉框,再获取Kendo实例
    var dropDownList = $("#AIRLINENAME").data("kendoDropDownList");
    var selectedPartnerId = dropDownList.value();
    
    alert("选中的PARTNERID:" + selectedPartnerId);
}

额外检查点

如果还是不行,可以打开浏览器的开发者工具,查看下拉框的<option>标签:正常情况下,每个option的value属性应该是PARTNERID的值,文本是PARTNERNAME。如果option的value显示的是文本,那说明数据源绑定的时候就出问题了,回到第一步检查你的数据源属性。

内容的提问来源于stack exchange,提问作者Nijin P J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:54:02