1

我在 KendoUI DropDownList 中有一个项目列表。它是使用 Razor 语法生成的

我想做的事:

  • 如果用户没有从列表中找到他/她正在寻找的内容,他/她选择“New...”(静态值)

  • 应显示一个隐藏的文本字段,允许他们添加新值

  • 新值应回发到控制器方法 (WIP)

我的想法:

  • 获取数据

  • 静态添加“新建”选项

到目前为止效果很好:

  • 它从控制器操作方法中获取数据并按预期显示列表

  • 我可以将它绑定到两个事件:“Change”和“DataBound”

问题:

我正在使用 jQuery 的“就绪”方法添加名为“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');
};
4

1 回答 1

0

您所描述的只是 ComboBox 小部件开箱即用的支持。如果 items 集合中没有这样的值,则 ComboBox 的值将成为用户键入的文本。在此处仔细查看 ComboBox 小部件(更具体地说,在使用不同的值时使用 getValue 按钮)。

于 2014-03-03T17:32:01.103 回答