【问题标题】:ASP.NET UpdatePanel CustomControl and PopupControlExtender odd issueASP.NET UpdatePanel CustomControl 和 PopupControlExtender 奇怪的问题
【发布时间】:2015-01-03 12:20:40
【问题描述】:

我正在尝试使用 UpdatePanels、PopupControlExtenders 和自定义控件来创建复选框的下拉列表。它在大多数情况下都有效,除了一个我似乎找不到解决方法的奇怪故障。

EnhancedCheckboxList.cs

Default.aspx

Default.aspx.cs

为了复制故障,您必须按以下顺序执行以下操作。

  1. 将下拉菜单设置为 Role2
  2. 将 B 下拉菜单设置为 Role2
  3. 反转所有 A 权限(取消选中选中项并选中未选中项)
  4. 将 B 下拉菜单设置为 Role1
  5. 查看 A 权限(我们在步骤 3 中未选中的项目已再次选中)

无论出于何种原因,在步骤 3 中取消选中 Authorities 没有任何效果,但选中它们会?我研究了从 Request.Params 中获取正确的值,但看起来这并没有给我想要的东西。只有在您切换步骤 2 和 3 时按该顺序执行步骤时才会发生故障。

【问题讨论】:

  • 您还看到这种行为吗?当您展开 AuthoritiesEnhancedCheckboxList 或从按钮发布的代码隐藏时,是否会看到已选中/未选中的 Authorities

标签: asp.net checkbox updatepanel asp.net-customcontrol popupcontrolextender


【解决方案1】:

您会考虑取消更新面板吗?我能够使用您的原始代码重现故障。删除 UpdatePanel 后,故障不再可重现:

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

【讨论】:

  • 这可能是解决方案。我们刚刚将更新面板添加到页面中,因为页面上有一个密码字段,用户不喜欢它会清除他们输入的密码。感谢您的帮助,享受赏金!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多