1

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

0 に答える 0