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();
}
}