Javascript 剑道MVC-如何在MultiselectBox上向数据源添加其他项

Javascript 剑道MVC-如何在MultiselectBox上向数据源添加其他项,javascript,jquery,asp.net-mvc,kendo-ui,Javascript,Jquery,Asp.net Mvc,Kendo Ui,我想在加载自己的项目后,向MultiselectBox的数据源添加具有Name和ID属性的额外项目 这是我的多选框: @(Html.Kendo().MultiSelect() // .Events(e=> // e.Select("Select")) .Name("lstStatus") .DataTextField("DESCRIPTION") .DataValueField("REFERENCEID") // .AutoBind(false)

我想在加载自己的项目后,向MultiselectBox的数据源添加具有Name和ID属性的额外项目

这是我的多选框:

@(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:

使用此设置,所有项目都会加载到multiselectbox,但当我单击文本框时,我看不到自定义添加的项目,即全选。
当我将Multiselectbox的自动绑定设置为false时,我可以在combobox上看到初始值,但当我单击multiselect的文本区域时,我只看到Select ALL项。无法加载其他项。

为什么不尝试使用占位符,它是MultiSelect中的一个属性

.Placeholder("Select All")
如果没有,那么您也可以尝试在数据绑定事件中添加数据

.Events(ev=>ev.DataBound("JavaScriptFunction"))
在数据绑定事件处理程序中添加该项:

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

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

        this._adding = false;
    }
}

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

。占位符select All只是一个文本。我想添加一个名为All Selected的项目,它通知用户不必选择要筛选的所有项目。我在表单上有一个发送值的筛选按钮从Multiselectbox。当我尝试DataBound时,我遇到一个javascript错误:Uncaught RangeError:超出了最大调用堆栈大小,我无法添加自定义项。它会在Multiselectbox自己的项之后添加自定义项。是否有方法在Multiselectbox的数据之前添加自定义项?我的意思是我想广告dmy自定义数据第一。另一个问题是,由于我使用Multiselectbox的open event,每次打开Multiselectbox时,它都会添加我的自定义项。我只需要添加一次项。选择它时,必须从Multiselectbox中删除其他项。.Eventse=>e.OpenLSThathes\u select-----函数lstStatus\u select{var list=$lstStatus.datakendoMultiSelect;list.dataSource.add{REFERENCEID:1,DESCRIPTION:ALL status};}在匆忙中,我想你可以试着在控制器中添加你的物品,然后再将其返回到multiselect并按id订购。考虑到你必须为你的物品提供最低id,以便它作为第一个物品出现,我相信你可以在剑道中找到更好的解决方案,但如果你很忙,这只是需要做的事情。谢谢,我会我将在控制器上添加自定义项作为临时解决方案。我仍在搜索如何在视图上使用javascrip。
function multiSelectDataBound(e) {
    if (!this._adding) {
        this._adding = true;

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

        this._adding = false;
    }
}