Uncollapsible CollapsiblePanelExtender - PullRequest
       35

Uncollapsible CollapsiblePanelExtender

2 голосов
/ 26 августа 2008

У меня есть 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>

Ответы [ 4 ]

3 голосов
/ 26 августа 2008

Извините, у меня нет времени на то, чтобы сработать ваш код, так что это с бедра.

Существует большая вероятность того, что это действие на стороне клиента не будет выполнено. Убедитесь, что на вашей странице указан правильный тег doctype, если вы удалили его со своей страницы или masterPage. Кроме того, попытайтесь также установить ClientState:

DDE.ClientState = true;

Проблема в том, что у вас есть эта штука, обернутая внутри вашего TemplateField. Я столкнулся с проблемами при использовании AjaxControlToolkit на повторяющихся полях и обычно с использованием более легкого варианта на стороне клиента, вплоть до использования собственного метода show / hide, который можно использовать повторно, просто передав идентификатор DOM.

1 голос
/ 26 августа 2008

После проверки автоэкспанда (который не имел видимого эффекта) я проверил тип DOC. Конечно же Это был виновник.

Это правильный:

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

Спасибо, Ян!

0 голосов
/ 05 февраля 2015

Работает нормально:

CollapsiblePanelExtender CpeForControls = (CollapsiblePanelExtender)tbl_Form.FindControl("cpe_controls");
CpeForControls.ClientState = "true";
CpeForControls.Collapsed = true;
0 голосов
/ 26 августа 2008

Также убедитесь, что у вас установлено следующее свойство:

AutoExpand="False"

Одна из особенностей складной панели заключается в том, что она автоматически раскрывается при наведении на нее мыши, и этот тег гарантирует, что этого не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...