我希望在加载自己的项目后,将额外的项目(带有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时,我只看到"选择全部"项目。其他项目无法加载。
答案 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错误的无限循环。