首页 > 解决方案 > AJAX 之后的 Kendo DropDownList 选择值

问题描述

我尝试在来自 AJAX 的数据到来后选择 DropDownList 值,但我的解决方案不起作用这是我的代码:

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 后,我可以通过 Web 浏览器控制台设置 #dropdown 值,但是相同的代码不适用于 dataSource 中的 requestEnd 函数

标签: javascriptjqueryajaxdrop-down-menukendo-ui

解决方案


DataSource中的事件requestEnd在数据请求完成时触发,数据不必绑定到小部件。由于选择是指小部件(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);
        }
    });

};

推荐阅读