将自定义data- *属性添加到Kendo UI AutoComplete或ComboBox

时间:2014-09-03 17:04:40

标签: kendo-ui kendo-asp.net-mvc kendo-combobox kendo-autocomplete

目前正在使用Kendo界面AutoCompleteFor()ComboBoxFor()帮助器。

注意到他们生成/渲染了一堆<li>个。

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

以下是当前情况:

  1. 用户开始在AutoCompleteFor
  2. 中输入内容
  3. 触发ajax调用以获取与之相关的一些数据 用户已键入。
  4. 将获得的结果转换为 IEnumerable<SelectListItem>
  5. 然后将结果发送给Json。 Json(result, JsonRequestBehavior.AllowGet)
  6. 我的目标是为这些data-* attribute生成行中的每一行添加一个或多个<li>,以便我可以在onChange()事件中获取这些数据*。

    如何实现这一目标?

    此外,我知道我可以创建自己的.Template()并可能完成我的任务,但我很好奇,如果有人知道不同的方法,然后必须创建我自己的模板。

    此致

1 个答案:

答案 0 :(得分:0)

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

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

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...
}

就是这样。

相关问题