Kendo MVC-如何在MultiselectBox上向数据源添加其他项目

时间:2013-12-10 11:28:52

标签: javascript jquery asp.net-mvc kendo-ui

我希望在加载自己的项目后,将额外的项目(带有Name和ID属性)添加到MultiselectBox的数据源中。

这是我的MultiselectBox:

@(Html.Kendo().MultiSelect()
   // .Events(e=>
     //   e.Select("Select"))
  .Name("lstStatus")
  .DataTextField("DESCRIPTION")
   .DataValueField("REFERENCEID")

  // .AutoBind(false) 

   .Placeholder("Select Case Status")
   .Value(GetPreSelectedStatusList()) //Adds initial values

   .DataSource(source =>
   {
       source.Read(read =>
       {
           read.Action("GetDefinitionDetails", "Definition", new { definitionCode = "CASE_STATUS", addEmptyRow = false }); 
       })
       .ServerFiltering(true);

   }))

JS:

var list = $("#lstStatus").data("kendoMultiSelect");
 list.dataSource.add({
     REFERENCEID: 1,
     DESCRIPTION: "SELECT ALL"
 });

使用此设置,所有项目都会加载到multiselectbox,但是当我点击文本框时,我看不到我自定义添加的项目(这是"全选")。 当我将Multiselectbox的AutoBind设置为false时,我可以在组合框上看到初始值,但是当我点击multiselect的textarea时,我只看到"选择全部"项目。其他项目无法加载。

2 个答案:

答案 0 :(得分:0)

为什么不尝试使用(占位符)MultiSelect

中的属性
.Placeholder("Select All")

如果没有,那么您也可以尝试在数据绑定事件中添加数据

.Events(ev=>ev.DataBound("JavaScriptFunction"))

答案 1 :(得分:0)

dataBound事件处理程序中添加项目:

function multiSelectDataBound(e) {
    if (!this._adding) {
        this._adding = true;

        e.sender.dataSource.add({
            REFERENCEID: 1,
            DESCRIPTION: "SELECT ALL"
        });

        this._adding = false;
    }
}

私有变量用于防止导致你在@ MohQut的回答中提到的javascript错误的无限循环。