мультиселектированный текст kendo, накладываемый на выбранные элементы - PullRequest
0 голосов
/ 23 октября 2018

Я реализую kendomultiselect в моем веб-приложении.в множественном выборе есть опция,

, если мы введем новый текст элемента в множественном выборе, он обновит источник данных и базу данных.это работает нормально.см. мой код ниже.

function fnLoadDocumentTags() {
var newTagItem = "";

function onTagDataBound() {
    if ((newTagItem || this._prev) && newTagItem !== this._prev) {
        var ds = this.dataSource,
            datas = ds.data(),
            lastItem = datas[datas.length - 1];

        newTagItem = this._prev;

        if (/\(Add New\)$/i.test(lastItem.TagName)) {
            ds.remove(lastItem);
        }

        var newEntryFound = _.findWhere(datas, { TagName: newTagItem }) != null;

        if (newTagItem.length > 0 && !newEntryFound) {

            ds.add({
                TagName: newTagItem + " (Add New)", TagID: newTagItem
            });
            this.open();
        }
    }

}

function onTagSelect(e) {
    debugger;
    var dataItem = this.dataSource.view()[e.item.index()],
    datas = this.dataSource.data(),
    lastData = datas[datas.length - 1];

    if (parseInt(dataItem.TagID) > 0) {
        //////this.dataSource.remove(lastData);
    }
    else {
        if (newTagItem.length > 0) {
            var tagID = fnInsertDocumentTags(newTagItem);
            dataItem.TagName = dataItem.TagName.replace(" (Add New)", "");
            dataItem.TagID = tagID;
        }
    }

    ////$.each(datas, function (index, value) {
    ////    debugger;
    ////    if (datas[index].TagID == 0) {
    ////        var dummyItem = datas[index];
    ////        this.dataSource.remove(dummyItem);
    ////        return;
    ////    }
    ////});
}

function onTagClose(e) {
    fnTagsChangeSelect();
}

var data = new kendo.data.DataSource({
    batch: true,
    transport: {
        read: {
            url: urljsonGetDocumentTags,
            dataType: "json"
        },
    },
    schema: {
        model: {
            id: "TagID",
            fields: {
                TagID: {
                    type: "number"
                },
                TagName: { type: "string" }
            }
        }
    }
});

$("#Tags").kendoMultiSelect({
    animation: false,
    dataTextField: "TagName",
    dataValueField: "TagID",
    dataSource: data,
    dataBound: onTagDataBound,
    select: onTagSelect,
    close: onTagClose
});
}

Но в то же время я сталкиваюсь с такой проблемой, как, когда я набираю текст в множественном выборе, текст накладывается на выбранные элементы в множественном выборе.пожалуйста, смотрите изображение ниже.

enter image description here

Было бы хорошо, если бы у кого-нибудь было предложение ...

...