2

UpdatePanels、PopupControlExtenders、およびカスタム コントロールを使用して、チェックボックスのドロップダウン リストを作成しようとしています。方法が見つからないように見える1つの奇妙な不具合を除いて、ほとんどの場合機能します。

EnhancedCheckboxList.cs

デフォルト.aspx

Default.aspx.cs

グリッチを再現するには、次のアクションを以下の順序で実行する必要があります。

  1. ドロップダウンを Role2 に設定する
  2. B ドロップダウンを Role2 に設定
  3. すべてのA権限を反転(チェック項目のチェックを外し、チェックを外した項目にチェックを入れる)
  4. B ドロップダウンを Role1 に設定
  5. View A Authorities (手順 3 でチェックを外した項目が再度チェックされます)

なんらかの理由で、手順 3 で機関のチェックを外しても効果はありませんが、チェックすると効果がありますか? Request.Params から正しい値を取得することを検討しましたが、それが私が望むものを与えているようには見えません。不具合は、手順 2 と 3 を入れ替えてこの順序で手順を実行した場合にのみ発生し、正常に動作します。

4

1 に答える 1

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>
于 2014-12-12T06:59:27.850 に答える