2013-10-23 82 views
0

我有這ASP:GridView,我似乎無法在我的代碼隱藏ascx文件中的ASP:GridView內聲明asp控件或div標籤。如何隱藏asp內的asp控件或div標籤:GridView

<asp:GridView runat="server" ID="siteMembersView" AllowPaging="True" 
      ShowHeader="False" EnableModelValidation="True" AutoGenerateColumns="false" CssClass="membership-gridview" Width="100%" CellPadding="0" CellSpacing="0"> 
     <Columns> 
      <asp:TemplateField> 
      <ItemTemplate> 

      //content 

      </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
</asp:GridView> 

我試圖把Mydiv.Visible = falseLinkButton.Visible = False 但它無法找到的ID。我正在使用runat="server"。我認爲問題在於它在GridView內部,因爲我試圖將它放在GridView之外,並且它完美地工作。

任何形式的幫助表示讚賞

回答

1

使用FindControl方法來訪問你的控制,那麼你可以申請邏輯切換各的知名度:

How to find control in TemplateField of GridView?

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    HtmlGenericControl myDiv; 
    LinkButton myLinkButton; 

    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     myDiv = (HtmlGenericControl)e.Row.FindControl("myDiv") 
      as HtmlGenericControl; 
     myDiv.Visible = false; 

     myLinkButton = (LinkButton)e.Row.FindControl("myLinkButton") 
      as LinkButton; 
     myLinkButton.Visible = false; 
    } 
} 
+0

@IrishChieftan是正確。您不能隱藏嵌套在GridView,DataGrid,Repeater或DataSource綁定到集合的其他控件內的控件。您必須在外部控件的ItemDataBound事件中找到目標控件,然後根據您喜歡的任何邏輯條件來顯示或隱藏它。確保您的代碼檢查以確保在設置值之前,「myDiv」(來自上述答案)不爲空。否則,如果其他人改變了控件的ID,你會得到一個空引用異常。 –

+0

由於某種原因,這段代碼無法正常工作我在FindControl參數中有我的linkbutton ID。方法名稱是否需要特定於某些內容? – Obsivus

+0

您可以向我們展示模板中的控件標記和我的代碼示例的版本嗎? – IrishChieftain