не удается найти элемент управления в FormView?

#c# #asp.net #formview #findcontrol

#c# #asp.net #formview #findcontrol

Вопрос:

Мне нужно найти этот <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() , ни то, ни другое не сработало.
Есть идеи, пожалуйста??

Ответ №1:

FindControl будет работать только после того, как эти элементы управления будут созданы, т. е. когда данные будут привязаны к FormView . Итак, вам нужно использовать соответствующее событие для FormView такого ItemCreated или DataBound . Например,

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

Предполагая, что вы выполняете привязку в page_load или используете разметку, вы также можете безопасно использовать prerender событие родительской страницы / элемента управления для выполнения FindControl .

Комментарии:

1. могу ли я выполнить итерацию по всем строкам в Formview?

2. @PankajGarg, я не уверен, что ты подразумеваешь под всеми строками ! FormView отображает одновременно только одну строку данных, доступ к которой возможен через Row свойство. Другие объекты row могут существовать на основе настроек, например HeaderRow , FooterRow , TopPagerRow и т. Д