有人知道如何在 Kendo MultiSelect 中添加新项目吗?虽然我已经尝试了很多可以在互联网和论坛上找到的答案。但是,它现在不适合我。当我尝试使用现有代码添加新项目时,只会添加未定义的项目。我想在提交按钮上将新添加的项目发布到控制器。任何人都可以为此提供适当的工作解决方案吗?
看法:
@(Html.Kendo().MultiSelectFor(model => model.AlternateNames)
.HtmlAttributes(new { @style = "width:100%" })
.AutoClose(true)
.DataTextField("Text")
.DataValueField("Value")
.BindTo(Model.AlternateNamesList)
.Events(e => { e.Change("change").DataBound("dataBound"); })
)
JS代码:
function change() {
var value = this.value().slice(0);
var dataitems = this.dataSource.data();
var newtag = "";
for (var i = 0; i < dataitems.length; i++) {
var dataItem = dataitems[i];
if (dataItem.text.substring(0, "Add new tag: ".length) === "Add new tag: ") {
newtag = dataItem.text.replace("Add new tag: ", "");
this.dataSource.remove(dataItem);
}
}
if (newtag != "") {
this.dataSource.add({ text: newtag, value: newtag });
}
if (newtag) {
this.dataSource.filter({});
if (this.value().length == 1) {
this.value(newtag);
}
else {
value.push(newtag);
console.log(value);
this.value(value);
}
}
}
var newitemtext = '';
function dataBound() {
if ((newitemtext || this._prev) && newitemtext != this._prev) {
newitemtext = this._prev;
var dataitems = this.dataSource.data();
var isfound = false;
for (var i = 0; i < dataitems.length; i++) {
var dataItem = dataitems[i];
if (newitemtext != "" && newitemtext != "undefined") {
if (dataItem.text == newitemtext) {
dataItem.text = newitemtext + "% ";
this.refresh();
isfound = true;
}
}
}
if (!isfound) {
if (newitemtext != "" && newitemtext != "undefined") {
alert(newitemtext);
this.dataSource.add({ text: newitemtext + "% ", value: newitemtext + "% " });
this.refresh();
}
}
this.search();
this.open();
}
}