将自定义数据属性添加到Kendo UI自动完成或组合框
问题描述:
当前使用Kendo UI AutoCompleteFor()
和ComboBoxFor()
帮助程序。将自定义数据属性添加到Kendo UI自动完成或组合框
注意到它们生成/呈现一堆<li>
s。
如何为这些<li>
s添加其他自定义data-* attributes
?
下面是当前的场景:
- 用户开始在AutoCompleteFor
- Ajax调用输入的东西被触发以获取有关什么 用户键入一些数据。
- 将得到的结果转换成
IEnumerable<SelectListItem>
。 - 然后将结果发送给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...
}
所以这是它。