如果我有三个或更多下拉列表,如何修复部分渲染

时间:2012-01-17 09:54:36

标签: c# asp.net ajax updatepanel renderpartial

如果我有三个下拉列表:

从第一个选择时填充的第二个

当我从第二个选择时,第三个填充。

我将第二个和第三个放在更新面板中以进行部分回发,但我注意到当我从第二个选择时,第三个不会填充!!

如何解决这个问题?

    <asp:DropDownList ID="drp_camp" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_camp_SelectedIndexChanged" Width="300px"> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:DropDownList ID="drp_fac" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_fac_SelectedIndexChanged"
                Width="300px">
            </asp:DropDownList>
            <asp:RequiredFieldValidator ID="rVal_fac" runat="server" ControlToValidate="drp_fac"
                ErrorMessage="!" InitialValue="-1" ValidationGroup="G1"></asp:RequiredFieldValidator>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="drp_camp" EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>
    <asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>
            <asp:DropDownList ID="drp_dep" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_dep_SelectedIndexChanged"
                Width="300px">
            </asp:DropDownList>
            <asp:RequiredFieldValidator ID="rVal_dep" runat="server" ControlToValidate="drp_dep"
                ErrorMessage="!" InitialValue="-1" ValidationGroup="G1"></asp:RequiredFieldValidator>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="drp_fac" EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>

2 个答案:

答案 0 :(得分:1)

尝试使用级联下拉列表。这非常好,可以解决您的问题。 http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx

答案 1 :(得分:1)

您可以将所有三个DropDownLists放在一个UpdatePanel控件中,不需要尝试处理每个控件的部分回发。

您可以使用以下内容:

<asp:UpdatePanel ID="upMain" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="drp_camp" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_camp_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:DropDownList ID="drp_fac" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_fac_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:DropDownList ID="drp_dep" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_dep_SelectedIndexChanged">
        </asp:DropDownList>
    </ContentTemplate>
</asp:UpdatePanel>

注意:您需要重新添加RequiredFieldValidators。