将自定义数据属性添加到Kendo UI自动完成或组合框

问题描述:

当前使用Kendo UI AutoCompleteFor()ComboBoxFor()帮助程序。将自定义数据属性添加到Kendo UI自动完成或组合框

注意到它们生成/呈现一堆<li> s。

如何为这些<li> s添加其他自定义data-* attributes

下面是当前的场景:

  1. 用户开始在AutoCompleteFor
  2. Ajax调用输入的东西被触发以获取有关什么 用户键入一些数据。
  3. 将得到的结果转换成 IEnumerable<SelectListItem>
  4. 然后将结果发送给Json。 Json(result, JsonRequestBehavior.AllowGet)

我的目标是添加一个或多个其他data-* attribute到每个<li>的产生线,这样我可以在onChange()事件获取这些数据 - *。

如何实现这一目标?此外,我知道我可以创建自己的.Template(),并可能实现我的任务,但我很好奇,如果有人知道采用不同的方式来完成此任务,那么必须创建自己的模板。

真诚

好的我找到了解决方案;如果有人感兴趣,我会在此分享。

我只是将其转换为IEnumerable<CustomDTO>,而不是将获得的结果转换为IEnumerable<SelectListItem>

CustomDTO类看起来是这样的:

public class CustomDTO 
{ 
    public int Value { get; set; } 
    public string Text { get; set; } 
    public int Age { get; set; } 
    //Add whatever more properties you think you’ll need. 
} 

在我的控制,我然后执行以下操作:

var result = _myService.GetData().ToList(); 
return Json(result, JsonRequestBehavior.AllowGet); 

GetData()返回IEnumerable<CustomDTO>

在我看来,我有一个AutoCompleteFor()控制,我绑定客户端 .Events(x => x.Select("onSelect")事件处理程序。

处理程序的定义,像这样:

function onSelect(e) 
{ 
    if (e.item == null) return; 
    var dataItem = this.dataItem(e.item.index()); 
    var valueAttribute = dataItem.Value; 
    var textAttribute = dataItem.Text; 
    var ageAttribute = dataItem.Age; //This is how I get my additional value 
    //...code... 
} 

所以这是它。