我有一个SignIn页面,它有一个SignInUserControl页面,位于MasterPage中。在SignIn页面内,我有2个下拉列表
ddlCountry
ddlCity
我想改变国家,它会自动加载城市。使用此代码:
<li>
<label>Your Country:</label>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddlCountry" runat="server" Width="356px"
DataTextField="Country" DataValueField="CodCountry"
OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged" AutoPostBack="true" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCountry" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</li>
<li>
<label>Your City:</label>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:DropDownList ID="ddlGestor" runat="server" Width="356px" DataTextField="City" DataValueField="CodCity" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCountry" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</li>
城市已加载,但 AutoPostBack =“True”调用SignIn Page_Load(),MasterPage Page_Load()和SignInUserControl Page_Load()。顺便说一句,我在这些Page_Load()中有其他函数,因此它们也被称为
有什么方法可以避免这种情况吗?看起来UpdatePanel不是真正的Ajax,因为要工作它必须向服务器发送所有这些页面,而不仅仅是我想要的代码块
答案 0 :(得分:2)
是的,你可以通过使用ajax级联下拉列表来实现它
通过使用它,您可以实现绑定而无需任何回发启动
跟进此链接
http://www.ajaxcontroltoolkit.com/CascadingDropDown/CascadingDropDown.aspx