我按照示例更新了另一个下拉列表中的下拉列表:
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将保留它第一次点击时所拥有的内容。这有意义吗?到底是什么造成的?我知道数据正在被清除并添加了新选项,但页面仍然显示旧列表或根本没有。
答案 0 :(得分:1)
要更新选择菜单,jquery有一个基本的.change函数,可以在选择选项时进行监听。
但是,如果您希望更改是动态的,那么.quickchange变通方法就是您需要的变形器:
Dynamic selects on iPhone not working
您只是附加元素但不更新选择列表以反映选择选项时的更改。
以下是所选属性的示例: