как исправить частичный рендеринг, если у меня есть три или более выпадающих списков - PullRequest
0 голосов
/ 17 января 2012

Если у меня есть три раскрывающихся списка:

Второй заполнен при выборе из первого

Третий заполнен при выборе из второго.

Я помещаю второй и третий в панели обновления, чтобы сделать частичную публикацию назад, но я отмечаю, что когда я выбираю из второго, третий вообще не заполняет !!

Как решить эту проблему?

    <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 ]

1 голос
/ 17 января 2012

Вы можете поместить все три 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 обратно.

1 голос
/ 17 января 2012

Попробуйте использовать каскадный выпадающий список.Это работает довольно хорошо, что решит вашу проблему.http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx

...