2017-12-07 10 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パネル!コード中のSO

  <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"> 
関連する問題