我有一个KendoUI DropDownList中的项目列表。它是使用Razor语法生成的
我想做什么:
如果用户没有从列表中找到他/她正在寻找的内容,他/她会选择“新...”(静态值)
应显示隐藏的文本字段,允许他们添加新值
新值应该回发到控制器方法(WIP)
我的想法:
获取数据
静态添加“新建”选项
到目前为止效果很好:
从控制器操作方法获取数据并按预期显示列表
我可以将它绑定到两个事件:“更改”和“DataBound”
问题:
我正在使用jQuery的“ready”方法来添加名为“New ..”的静态值。它重复了这个值。我认为这是一个无限循环。
所以我被困在这一点
在部分视图中:
@(Html.Kendo().DropDownListFor(model => model.ClientType)
.DataSource(ds => ds.Read(read => read.Action("FetchAllClientTypes", "ClientType")))
.DataTextField("Description")
.DataValueField("Id")
.AutoBind(true)
.Events(e =>
{
e.Change("onClientTypeChange").DataBound("onClientTypeDataBound");
})
.ToClientTemplate()
)
@Html.ValidationMessageFor(model => model.ClientType)
使用Javascript:
/*When dropdown is bound, add "New..."*/
/* Duplicates "New". Appears to be infinite. */
function onClientTypeDataBound() {
var clientTypesDropDownList = $('#ClientType').data('kendoDropDownList');
clientTypesDropDownList.dataSource.add({ Description: 'New...', value: '-1' });
};
/**Works**/
function onClientTypeChange() {
alert('Testing On change');
};
答案 0 :(得分:0)
您描述的所有内容都是ComboBox小部件的开箱即用支持。如果items集合中没有这样的值,则ComboBox的值将成为用户键入的文本。仔细看看ComboBox小部件here(更具体地说,在使用不同的值时使用getValue按钮)。