#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
и т. Д