2011-05-24 21 views
3

我需要找到這個<a>標籤在FormView控制居住,我需要刪除這取決於條件的標籤,但使用FormView.FindControl方法

<asp:UpdatePanel ID="upDiscipline" runat="server"> 
    <ContentTemplate> 
     <asp:FormView ID="fvMediaIntro" runat="server"> 
      <ItemTemplate>   
        <div class="clipControls"> 
        <a runat="server" id="iNeedToFindThis" href="#">here</a> 
        </div> 
      </ItemTemplate> 
    </ContentTemplate> 
</asp:UpdatePanel> 

我試圖fvMediaIntro.FindControl()fvMediaIntro.Row.FindControl()我找不到它,既不工作。 有什麼想法嗎?

回答

7

FindControl只有在創建這些控件後,即數據綁定到FormView時才能正常工作。因此,您需要使用FormView上的適當事件,例如ItemCreatedDataBound。例如,

protected void fvMediaIntro_ItemCreated(Object sender, EventArgs e) 
{ 
    var control = fvMediaIntro.Row.FindControl("iNeedToFindThis") as HtmlAnchor; 
} 

假設,你是在page_load結合或使用標記,您還可以使用prerender事件的父頁/控制的安全做FindControl

+0

我可以遍歷Formview中的所有行嗎? – Pankaj 2012-03-27 16:55:16

+0

@PankajGarg,我不確定你的意思是*所有行*! FormView一次只顯示一個數據行 - 可以通過'Row'屬性進行訪問。其他行對象可以基於設置存在,例如, 'HeaderRow','FooterRow','TopPagerRow'等 – VinayC 2012-03-28 04:44:56