0

我按照示例从另一个下拉列表的选择中更新下拉列表:

    var pageUrl = '<%=ResolveUrl("~/Reports.aspx")%>';
    function PopulatePortfolioDropDown() {
        var ddl = document.getElementById('<%=ddlPortfolio.ClientID %>');
        ddl.options.length = 0;
        var prgyr = document.getElementById('<%= ddlProgYear.ClientID %>');
        var agy = document.getElementById('<%= ddlAgency.ClientID %>');
        $telerik.$('#<%=ddlPortfolio.ClientID %>').empty(); //.append('<option selected="selected" value="0">Please Select...</option>');
        var str = prgyr.options[prgyr.selectedIndex].text + '|' + agy.options[agy.selectedIndex].value;
        $telerik.$.ajax({
            type: "POST",
            url: pageUrl + '/LoadPortfolioDDL1',
            data: '{yearcode:"' + str + '"}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnPortfolioData,
            failure: function (response) {
                alert(response.d);
            } 
        });
    }
    function OnPortfolioData(response) {
        PopulateControl(response.d, $telerik.$('#<%=ddlPortfolio.ClientID %>'));
    }
    function PopulateControl(list, control) {
         if (list.length > 0) {
            control.attr("disabled", false);
            control.empty();
            $telerik.$.each(list, function () {
                control.append($telerik.$("<option></option>").val(this['Value']).html(this['Text']));
            });
        }
        else {
            control.empty().append('<option selected="selected" value="0">Not available<option>');
        }
    }

这在第一次选择 ddlAgency 时效果很好。如果我进行第二次选择,则显示的列表不会更新,并且仍会显示原始列表。但是,如果我选择第二个列表中的一个项目,则更新的项目(来自第二个调用)会正确显示。这是IE的问题吗?更多信息:我要更新的 DDL 在页面加载时没有填充任何数据。如果我选择 DDL,它不会显示任何选项。即使我在控制 DDL 中进行了选择,第二个也没有显示任何项目。如果我不单击 DDL,则会显示这些项目。就像 DDL 将保留第一次单击时的内容。这有意义吗?这到底是什么原因造成的?我知道正在清除数据并添加了新选项,但页面仍然显示旧列表或根本不显示。

4

1 回答 1

1

为了更新选择菜单,jquery 有一个基本的 .change 函数,它在选择选项时进行监听。

http://api.jquery.com/change/

但是,如果您希望更改是动态的,则此 .quickchange 解决方法是您需要的魅力:

iPhone上的动态选择不起作用

您只是附加元素,而不是更新选择列表以反映选择选项时的更改。

以下是选定属性的示例:

JQuery 在选择列表上设置选定属性

于 2012-12-14T15:26:53.643 回答