2013-10-08 3 views
0

Я хочу добавить расширяемую сетку asp внутри ASP-панели, которую я хочу сделать видимой/невидимой, изменив видимый параметр true/false на панели.Расширяемый Gridview внутри ASP-панели

Если я удаляю 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

Это компиляция error, со списком строк в желтом backgrond и одной строке с красными символами: Selrac

0

Я думаю, что вы сталкиваетесь с панелью обновлений с клиентской версией JavaScript.

Если вы используете панель обновления, почему бы просто не изменить <a href на элемент управления asp: LinkButton и переключить видимость на событие щелчка этого объекта.

+0

, вероятно, чтобы избежать сквозного частичного обновления для чего-то, что можно сделать на стороне клиента. Причиной может быть и отзывчивость приложения. – CharlesAD

Смежные вопросы