ASP.NET UpdatePanel CustomControl и PopupControlExtender нечетная проблема

Я пытаюсь использовать UpdatePanels, PopupControlExtenders и пользовательский элемент управления для создания раскрывающегося списка флажков. Это работает по большей части за исключением одного странного сбоя, который я не могу найти способ обойти.

EnhancedCheckboxList.cs

Default.aspx

Default.aspx.cs

Для того, чтобы повторить глюк, вы должны выполнить следующие действия в следующем порядке.

  1. Установить раскрывающийся список на Role2
  2. Установите раскрывающийся список B на Role2
  3. Invert all A Authorities (снимите флажок с проверенных элементов и отметьте их)
  4. Установите B Dropdown для Role1
  5. Просмотр полномочий (элементы, которые мы не отметили на шаге 3, снова были проверены)

По какой-то причине снятие отметки с властей на шаге 3 не имеет никакого эффекта, а проверка их делает? Я посмотрел на получение правильных значений из Request.Params, но это не похоже, что дает мне то, что я хочу. Сбой произойдет, только если вы выполните шаги в таком порядке, если вы переключите шаги 2 и 3, он работает нормально.

1 ответ

Решение

Рассматриваете ли вы исключение UpdatePanels? Я смог воспроизвести глюк, используя ваш оригинальный код. После того, как я удалил UpdatePanels, глюк больше не воспроизводится:

    <fieldset>
            <legend>Role</legend>
            <table width="500">
                <tr>
                <td>A</td>
                    <td valign="top">
                        <asp:DropDownList ID="Roles" runat="server" AutoPostBack="True" OnSelectedIndexChanged="roles_SelectedIndexChanged">
                        </asp:DropDownList>
                    </td>
                    <td valign="top">
<%--                        <asp:UpdatePanel ID="UpdatePanel" runat="server">
                            <ContentTemplate>--%>
                                <asp:TextBox ID="txtAuthority" Text="Authorities" runat="server" CssClass="txtboxaschkbox" Visible="false"></asp:TextBox>
                                <asp:Panel runat="server" ID="PnlAuth" Visible="false" CssClass="PnlDesign">
                                    <cc1:EnhancedCheckboxList ID="Authorities" runat="server">
                                    </cc1:EnhancedCheckboxList>
                                </asp:Panel>
                                <cc2:PopupControlExtender runat="server" ID="PceSelectAuthority" TargetControlID="txtAuthority"
                                    PopupControlID="PnlAuth" Position="Bottom"/>
<%--                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="Roles" />
                            </Triggers>
                        </asp:UpdatePanel>--%>
                    </td>
                </tr>
                <tr>
                <td>B</td>
                    <td valign="top">
                        <asp:DropDownList ID="Roles2" runat="server" AutoPostBack="True" OnSelectedIndexChanged="roles2_SelectedIndexChanged">
                        </asp:DropDownList>
                    </td>
                    <td valign="top">
<%--                        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                            <ContentTemplate>--%>
                                <asp:TextBox ID="txtAuthority2" Text="Authorities" runat="server" CssClass="txtboxaschkbox" Visible="false"></asp:TextBox>
                                <asp:Panel runat="server" ID="PnlAuth2" Visible="false" CssClass="PnlDesign">
                                    <cc1:EnhancedCheckboxList ID="Authorities2" runat="server">
                                    </cc1:EnhancedCheckboxList>
                                </asp:Panel>
                                <cc2:PopupControlExtender runat="server" ID="PceSelectAuthority2" TargetControlID="txtAuthority2"
                                    PopupControlID="PnlAuth2" Position="Bottom"/>
<%--                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="Roles2" />
                            </Triggers>
                        </asp:UpdatePanel>--%>
                    </td>
                </tr>
            </table>

        </fieldset>
Другие вопросы по тегам