2017-12-07 12 views
0

그리드 내부에 개별 DIV를 프로그래밍 방식으로 표시/숨기기를 설정하고 싶지만 작동하지 않습니다. 이 코드를 어떻게 수정하겠습니까?그리드 ItemTemplate 내부에서 DIV를 숨기거나 표시하려면 어떻게합니까?

  foreach (DataGridItem dgItem in dgW.Items) 
      { 

       HtmlGenericControl dvGoodRow = 
        (HtmlGenericControl)dgItem.FindControl("dvGoodRow"); 
       HtmlGenericControl dvBadRow = 
        (HtmlGenericControl)dgItem.FindControl("dvBadRow"); 

       dvGoodRow.Visible = true; 
       dvBadRow.Visible = false; 
      } 

디버그 세션은 제가 위에서 설정 한 표시 속성이 적어도 내 시계 창에 적용 않지만, 시각적으로 브라우저에서 나는 변화를 볼 것으로 나타났다. 나는 아래와 같은 격자를 가지고 :

<asp:datagrid id="dgW" AutoGenerateColumns="False" ShowHeader="False" ShowFooter="False" runat="server" DataKeyField="SID" CellPadding="0" GridLines="None" AllowSorting="True" OnItemDataBound="dgW_ItemDataBound"> 
    <HeaderStyle /> 
    <FooterStyle> 
    </FooterStyle> 
    <Columns> 
     <asp:TemplateColumn HeaderText="SID" SortExpression="SID"> 
      <ItemTemplate> 
       <asp:Label ID="lblSID" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "SID") %>'></asp:Label> 
      </ItemTemplate> 
      <FooterTemplate> 
      </FooterTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn HeaderText="Extension" SortExpression="ExtensionStopDate"> 
      <ItemTemplate> 
       <asp:Label id="lblExtensionStopDate" Runat="server" text='<%# String.Format("{0:MM/dd/yyyy}", DataBinder.Eval(Container.DataItem, "ExtensionStopDate"))%>'></asp:Label> 
      </ItemTemplate> 
      <FooterTemplate> 
      </FooterTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn> 
      <ItemTemplate> 
       <div id="dvGoodRow" runat="server" hidden> 
        <div> 
         <asp:Label runat="server" ID="lblGoodRow"> 
          <i id="icnGoodRow" runat="server"></i> 
         </asp:Label> 
        </div> 
       </div> 
       <div id="dvBadRow" runat="server" hidden>  
        <div> 
         <asp:Label runat="server" ID="lblBadRow"> 
          <i id="icnBadRow" runat="server"></i> 
         </asp:Label> 
        </div>      
       </div>       
      </ItemTemplate> 
     </asp:TemplateColumn>      
    </Columns> 
</asp:datagrid> 

답변

0

내가 코드를 수정하고 결국 무엇을 사용 : 내가 ASP를 표시/숨기기로 전환 DIV 대신 .NET 패널!

  <asp:TemplateColumn> 
       <ItemTemplate> 
        <asp:Panel runat="server" ID="pnlGoodRow" Visible="False"> 
         <div id="dvGoodRow"> 
          <asp:Label runat="server" ID="lblGoodRow"> 
           <i id="icnGoodRow" runat="server"></i> 
          </asp:Label> 
         </div> 
        </asp:Panel> 
        <asp:Panel runat="server" ID="pnlBadRow" Visible="False">  
         <div id="dvBadRow"> 
          <asp:Label runat="server" ID="lblBadRow"> 
           <i id="icnBadRow" runat="server"></i> 
          </asp:Label> 
         </div>      
        </asp:Panel>       
       </ItemTemplate>  
      </asp:TemplateColumn>      

그래서 코드에서, 지금은 /는하는 div 대신 패널 요소를 보여 숨기기 :

 foreach (DataGridItem dgItem in dgW.Items) 
     { 
      System.Web.UI.WebControls.Panel pnlGoodRow = 
       (System.Web.UI.WebControls.Panel)dgItem.FindControl("pnlGoodRow"); 
      System.Web.UI.WebControls.Panel pnlBadRow = 
       (System.Web.UI.WebControls.Panel)dgItem.FindControl("pnlBadRow"); 

      pnlGoodRow.Visible = true; 
      pnlBadRow.Visible = false; 
     } 

이 작동!

0

그 '숨겨진'속성을 제거하고 visible 다음

<div id="dvGoodRow" runat="server" visible="false"> 

<div id="dvBadRow" runat="server" visible="false">