Uncollapsible CollapsiblePanelExtender

时间:2020-03-05 18:43:00  来源:igfitidea点击:

我有一个不会折叠的CollapsiblePanelExtender。我已经将" collapsed"设置为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"> </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>

解决方案

回答

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

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

DDE.ClientState = true;

问题是我们将东西包装在TemplateField中。我在重复字段上使用AjaxControlToolkit时遇到了问题,通常在使用较轻量级的客户端选项时,甚至包括滚动自己的show / hide方法时,只需传递DOM理解的id即可重用。

回答

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

AutoExpand="False"

可折叠面板的功能之一是,当我们将鼠标放在其上时,它将自动展开,并且此标签将确保不会发生这种情况。

回答

在检查了AutoExpand(没有任何绞死效果)之后,我检查了DOC Type。果然。那是罪魁祸首。

这是正确的:

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

谢谢伊恩!