Javascript 剑道MVC-如何在MultiselectBox上向数据源添加其他项
我想在加载自己的项目后,向MultiselectBox的数据源添加具有Name和ID属性的额外项目 这是我的多选框: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)
@(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;
}
}