【问题标题】:Uncollapsible CollapsiblePanelExtender不可折叠 CollapsiblePanelExtender
【发布时间】:2025-12-29 20:00:07
【问题描述】:

我有一个不会折叠的 CollapsiblePanelExtender。我已将“折叠”设置为 true,并且所有 ControlID 设置正确。我尝试折叠它,它通过动画,但随后几乎立即展开。这是在具有以下结构的用户控件中。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="odsPartners" Width="450px" BorderWidth="0"
            ShowHeader="false" ShowFooter="false" AllowSorting="true" 
           onrowdatabound="GridView1_RowDataBound">
         <Columns>
            <asp:TemplateField HeaderText="Contract Partners" SortExpression="Name"> 
               <ItemTemplate>
                  <asp:Panel id="pnlRow" runat="server">
                     <table>
                          ...Stuff...
                     </table>
                  </asp:Panel>
                  <ajaxToolkit:CollapsiblePanelExtender runat="server" ID="DDE"
                              Collapsed="true" ImageControlID="btnExpander" ExpandedImage="../Images/collapse.jpg" CollapsedImage="../Images/expand.jpg"
                              TargetControlID="DropPanel" CollapseControlID="btnExpander" ExpandControlID="btnExpander" />
                  <asp:Panel ID="DropPanel" runat="server" CssClass="CollapsedPanel">
                     <asp:Table ID="tblContracts" runat="server">
                        <asp:TableRow ID="row" runat="server">
                           <asp:TableCell ID="spacer" runat="server" Width="30">&nbsp;</asp:TableCell>
                           <asp:TableCell ID="cellData" runat="server" Width="400">
                               <uc1:ContractList ID="ContractList1" runat="server" PartnerID='<%# Bind("ID") %>' />
                           </asp:TableCell>
                         </asp:TableRow>
                      </asp:Table>
                  </asp:Panel>
               </ItemTemplate>
            </asp:TemplateField>
          </Columns>
       </asp:GridView>
    </ContentTemplate>
   <Triggers>
       <asp:AsyncPostBackTrigger ControlID="tbFilter" EventName="TextChanged" />
   </Triggers>
</asp:UpdatePanel>

【问题讨论】:

  • “不是编程问题”?
  • 我不记得关闭它...嗯。我重新打开了它。

标签: asp.net


【解决方案1】:

一切正常:

CollapsiblePanelExtender CpeForControls = (CollapsiblePanelExtender)tbl_Form.FindControl("cpe_controls");
CpeForControls.ClientState = "true";
CpeForControls.Collapsed = true;

【讨论】:

    【解决方案2】:

    在检查了 AutoExpand 之后(strangley 没有明显的效果),我检查了 DOC 类型。果然。那是罪魁祸首。

    这是正确的:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" > 
    

    谢谢伊恩!

    【讨论】:

      【解决方案3】:

      还要检查您是否设置了以下属性:

      AutoExpand="False"
      

      可折叠面板的一个特点是当你将鼠标放在它上面时它会自动展开,这个标签会确保不会发生这种情况。

      【讨论】:

        【解决方案4】:

        很抱歉,我没有时间对您的代码进行故障排除,所以这是最新的。

        很有可能这是一个失败的客户端操作。如果您将其从页面或 masterPage 中取出,请确保您的页面具有正确的 doctype 标签。此外,尝试设置 ClientState:

        DDE.ClientState = true;

        问题是你把那个东西包裹在你的 TemplateField 中。我在重复字段上使用 AjaxControlToolkit 时遇到了问题,并且通常使用更轻量级的客户端选项,包括滚动您自己的显示/隐藏方法,只需传入一个 DOM 理解的 id 即可重用。

        【讨论】: