如何使用UpdatePanel在没有任何回发的情况下触发Selected Index Changed事件?

时间:2014-11-05 11:46:28

标签: javascript asp.net ajax triggers updatepanel

我有一个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,因为要工作它必须向服务器发送所有这些页面,而不仅仅是我想要的代码块

1 个答案:

答案 0 :(得分:2)

是的,你可以通过使用ajax级联下拉列表来实现它

通过使用它,您可以实现绑定而无需任何回发启动

跟进此链接

http://www.ajaxcontroltoolkit.com/CascadingDropDown/CascadingDropDown.aspx