Kendo DropDownList выбрать значение после AJAX - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь выбрать значение DropDownList после поступления данных из AJAX, но мое решение не работает Вот мой код:

function openWindow(e) {
    var wdw = $("#myWindow").data("kendoWindow");
    wdw.open();
    e.preventDefault();
    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
    var grid = $("#grid").data("kendoGrid");
    grid.dataSource.transport.options.read.url = '@Url.Action("BindingList", "AttributeBinding")' + "?formId=" + dataItem.FormId;
    grid.dataSource.read();
    $("#title").html(dataItem.FormTitle);
    $("#dropdown").kendoDropDownList({
        optionLabel: "- please select -",
        dataTextField: "StringValue",
        dataValueField: "Id",
        dataSource: {
            transport: {
                read: {
                    url: '@Url.Action("PopUpBind", "AttributeBinding")',
                    dataType: "json",
                },

            },
            requestEnd: function () {
                $("#dropdown").data('kendoDropDownList').value(dataItem.MultiLinkerProductAttributeId);
            }
        }
    });

};

Когда загружен DropDown, я могу установить значение #dropdown с помощью консоли веб-браузера, но этот же код не работает с функцией requestEnd в dataSource

1 Ответ

0 голосов
/ 27 апреля 2018

Событие requestEnd в DataSource запускается, когда запрос данных завершен , но данные не должны быть привязаны к виджету. Так как выбор относится к виджету ( DropDownList ), вы должны использовать dataBound

Ваш код будет выглядеть примерно так:

function openWindow(e) {
    var wdw = $("#myWindow").data("kendoWindow");
    wdw.open();
    e.preventDefault();
    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
    var grid = $("#grid").data("kendoGrid");
    grid.dataSource.transport.options.read.url = '@Url.Action("BindingList", "AttributeBinding")' + "?formId=" + dataItem.FormId;
    grid.dataSource.read();
    $("#title").html(dataItem.FormTitle);
    $("#dropdown").kendoDropDownList({
        optionLabel: "- please select -",
        dataTextField: "StringValue",
        dataValueField: "Id",
        dataSource: {
            transport: {
                read: {
                    url: '@Url.Action("PopUpBind", "AttributeBinding")',
                    dataType: "json",
                },

            }
        },
        databound: function(e) {
            this.value(dataItem.MultiLinkerProductAttributeId);
        }
    });

};
...