2013-10-08 43 views
0

我想在ASP面板中添加一個可擴展的asp網格,我希望通過更改面板的可見true/false選項使其可見/不可見。ASP面板中的可擴展Gridview

如果我刪除asp:Panel ID =「test1」,網站打開時可擴展的gridview工作沒有問題。

一旦我添加面板我得到一個錯誤信息中的代碼:

Expression expected. 
Source Error: 
Line 46: <a href="JavaScript:divexpandcollapse('div<%# Eval(&quot;reporting_group&quot;) %>');"> 

會有人可以解釋爲什麼發生這種情況以及如何避免它。我也嘗試過使用Ajax TabContainer獲得相同的結果。

查看下面的代碼。

<script language="javascript" type="text/javascript"> 
    function divexpandcollapse(divname) { 
     var div = document.getElementById(divname); 
     var img = document.getElementById('img' + divname); 
     if (div.style.display == "none") { 
      div.style.display = "block"; img.src = "Images/Icons/minus.jpg"; 
     } else { div.style.display = "none"; img.src = "Images/Icons/plus.jpg"; } 
    }</script> 

<asp:Panel ID="test1" runat="server"> 
    Panel 1<br /> 
    <asp:UpdatePanel ID="UP_TabContainer" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:GridView ID="GV_SL" runat="server" AutoGenerateColumns="False" 
       DataSourceID="SQL_Weekly" OnRowCommand="GV_SL_RowCommand" 
       OnRowDataBound="gvUserInfo_RowDataBound"> 
       <Columns> 
        <asp:TemplateField ItemStyle-Width="50px"> 
         <ItemTemplate> 
          <a href="JavaScript:divexpandcollapse('div<%# Eval(&quot;reporting_group&quot;) %>');"> 
          <img id="imgdiv<%# Eval("reporting_group") %>" width="15px" border="0" src="Images/Icons/plus.jpg" /> 
          </a> 
         </ItemTemplate><ItemStyle Width="40px" /> 
        </asp:TemplateField> 
        <asp:BoundField DataField="name" HeaderText="Group" SortExpression="name" /> 
        <asp:BoundField DataField="ASL" HeaderText="SL% Act" ReadOnly="True" /> 
        <asp:TemplateField> 
         <ItemTemplate> 
          <tr> 
           <td > 
            <div ID='div<%# Eval("reporting_group") %>' style="display: none; position: relative; 
            left: 15px; overflow: auto"> 
             <asp:GridView ID="gvChildGrid" runat="server" AutoGenerateColumns="false"> 
              <Columns> 
               <asp:BoundField DataField="Metric" 
                HeaderText=" "/> 
               <asp:BoundField DataField="Actual" HeaderText="Actual" /> 
              </Columns> 
             </asp:GridView> 
            </div> 
           </td> 
          </tr> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 
      <br /> 
      <asp:SqlDataSource ID="SQL_Weekly" runat="server" 
       ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand=" SQL QUERY" <SelectParameters> 
       </SelectParameters> 
      </asp:SqlDataSource> 
      <asp:SqlDataSource ID="SQL_Group" runat="server" 
       ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand=" SQL QUERY" ></asp:SqlDataSource> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="DateSelection" 
       EventName="SelectedIndexChanged" /> 
     </Triggers> 
    </asp:UpdatePanel> 
    <br /> 
</asp:Panel> 

回答

1

試着改變你的鏈接觸發JavaScript以這樣的方式:

<a href="#" onclick="divexpandcollapse('div<%# Eval("reporting_group") %>');return false;"> 
    <img id="imgdiv<%# Eval("reporting_group") %>" width="15px" border="0" src="Images/Icons/plus.jpg" /> 
</a> 

注意

  • 使用"代替&quot;(修復編譯錯誤)
  • 將鏈接href設置爲"#"
  • 使用onclick事件執行JavaScript(好習慣)

+0

我得到了同樣的錯誤信息指向你提供的代碼:-( – Selrac

+0

是你得到的服務器端或客戶端的錯誤(是死亡的黃色屏幕還是它的JavaScript控制檯?) – CharlesAD

+0

這是一個彙編錯誤,帶有黃色背景和紅色字符的行的列表: Selrac

0

我認爲你與客戶端JavaScript的更新面板衝突。

如果您使用更新面板,爲什麼不將<a href更改爲asp:LinkBut​​ton控件並切換該對象的click事件的可見性。

+0

可能會避免通過完整的部分更新來完成客戶端可以完成的任務。此外,應用程序的響應也許是原因。 – CharlesAD