ASP.NET UpdatePanel CustomControl и PopupControlExtender нечетная проблема
Я пытаюсь использовать UpdatePanels, PopupControlExtenders и пользовательский элемент управления для создания раскрывающегося списка флажков. Это работает по большей части за исключением одного странного сбоя, который я не могу найти способ обойти.
Для того, чтобы повторить глюк, вы должны выполнить следующие действия в следующем порядке.
- Установить раскрывающийся список на Role2
- Установите раскрывающийся список B на Role2
- Invert all A Authorities (снимите флажок с проверенных элементов и отметьте их)
- Установите B Dropdown для Role1
- Просмотр полномочий (элементы, которые мы не отметили на шаге 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>