如何在更改事件中从 Kendo().DropDownList() 的 DataValueField() 中获取值

How to take value from DataValueField() of a Kendo().DropDownList() on change event

我正在使用 kendo 网格和编辑器模板来显示我的数据。在编辑器中,我已将 ID 赋予 DataValueField() 并将名称赋予 kendo 下拉列表的 DataTextField()。在更改事件中,我无法获取 DataValueField()。看下面代码

这是我的编辑器模板MemoCarrier.chtml

@using System.Collections
@(Html.Kendo().DropDownList()
  .DataValueField("PARTNERID")
  .DataTextField("PARTNERNAME")

  .Name("AIRLINENAME")
  .BindTo((IEnumerable)ViewBag.lstAirline)
  .HtmlAttributes(new { maxlength = "", @class = "MNum" })
 .OptionLabel("-Select-Flight ")
 .Filter(FilterType.Contains)
 .Events(e =>
 {
   e.Change("MemoCarrier");
 })
)

这是我的更改功能

function MemoCarrier(e) {
    var AirlineName = this.value();
    alert(AirlineName) //it displays PARTNERNAME instead of PARTNERID
}

目前我正在获取名称,即;DataTextField() 值。取而代之的是,我需要 DataValueField()。 提前感谢您的建议!

所以根据您的评论,最简单的方法可能是使用 data-bind 属性来简化绑定模型的过程。假设您也在为网格使用 MVC 助手。

所以获取您的代码并添加:

@(Html.Kendo().DropDownList()
  .DataValueField("PARTNERID")
  .DataTextField("PARTNERNAME")

  .Name("AIRLINENAME")
  .BindTo((IEnumerable)ViewBag.lstAirline)
  .HtmlAttributes(new { maxlength = "", @class = "MNum", data_bind="value:{yourProperyNameHere}" })
 .OptionLabel("-Select-Flight ")
 .Filter(FilterType.Contains)

)

所以希望您能看到我所做的只是为您添加一个新的 HtmlAttribute 属性 到控件。您需要做的就是将任何 属性 作为此值。

根据此值是复杂 (object) 还是简单 (string, int etc) 基本类型,您可能需要将 Primitive 属性 设置为 true 这样只有值字段,例如您分配的 id 被绑定回网格的行模型。