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
相关产品推荐
相关产品推荐

