我的 ASP.NET 页面上有一个 Google 语言下拉小部件。此页面包含级联下拉菜单。也就是说,从第一个下拉列表中选择值时,将填充另一个。
我面临的问题是,如果我首先从 Google 语言下拉列表中选择语言,然后从第一个下拉列表中更改值,则第二个下拉列表中的值不会保留为更改后的语言。我确信这是因为异步回发而发生的。但是,如果我将 EnableAjax 属性设置为 false,那么这是可行的。我正在使用 Telerik RadAjaxManager 来实现 Ajax。请在此处找到附加的代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test Page - ASP.NET</title>
</head>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="scrpt1">
</asp:ScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" EnableAJAX="true">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="ddl">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="DropDownList2" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<div>
<div id="google_translate_element">
</div>
<script type="text/javascript">
function googleTranslateElementInit()
{
new google.translate.TranslateElement({ pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<br />
<br />
<asp:DropDownList runat="server" ID="ddl" AutoPostBack="true">
<asp:ListItem Text="A"></asp:ListItem>
<asp:ListItem Text="B"></asp:ListItem>
<asp:ListItem Text="C"></asp:ListItem>
<asp:ListItem Text="D"></asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:DropDownList runat="server" ID="DropDownList2" />
</div>
</form>
</html>
代码背后
Private Sub ddl_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddl.SelectedIndexChanged
DropDownList2.Items.Add(ddl.SelectedItem.Text)
End Sub
如果我可以通过启用 Ajax 来实现这一点,请告诉我。
谢谢, 斯里尼瓦斯