У меня есть FindControl в OnLoad случае найти свою кнопку на странице, а именно:FindControl не работает с тегом сервера привязки, почему?
protected override void OnLoad(EventArgs e)
{
DataBind();
control button = Page.FindControl("myButton");
}
на моей странице ASPX я имею
<asp:Button runat="server" ID="myButton" />
Если у меня есть только это, все работает, когда я прохожу в кнопка OnLoad не равна null, и я могу выполнить то, что хочу. Проблема заключается в том, когда я добавить динамический текст в моей ASPX:
<asp:Button runat="server" ID="myButton" Text='<%# "Here is my dynamic text pulled from a XML" %>' />
Тогда FindControl ничего не находит, а кнопка является недействительным.
Добавление тега связующего сервера в aspx не означает, что нужно откладывать что-либо в порядке? Когда я проверяю объект страницы, у меня есть некоторые элементы управления в коллекции Controls, но я не могу найти myButton.
Любая идея о том, что я делаю неправильно?
EDIT
Люди, кажется, думают, что мой пример кода мой реальный код, но не, поэтому я использую FindControl, потому что мне нужно, так как у меня есть вложенные элементы управления, и я не могу получить доступ к нему напрямую и я использую привязку, потому что динамический текст, который я помещаю, находится внутри ContentTemplate, который я могу переопределить на другой странице aspx.
Вопрос, который я задал, более конкретен в том, что я проследил проблему, когда мой FindControl возвращает null, потому что новое поведение реализации является привязкой.
Улучшение примера кода не является решением или объяснением того факта, что если я положил на моей странице aspx тег <% #%>, то FindControl в событии OnLoad возвращает null.
EDIT 2
привязка тегов в одиночку, кажется, не может быть виновником, но и DataBind(), чтобы заполнить их. Независимо от того, есть ли у меня привязанный тег, помещая DataBind(), прежде чем FindControl сделает myButton равным нулю. Была сделана коррекция в примере кода.
Правильно, что работает движущийся код в Pre-Render, это означает, что мой шаблон DataSource не заполняется перед вызовом DataBind, поэтому myButton не найден. Не вызывая DataBind, пусть перезагрузка контроллера из viewstate и поэтому не является нулевым. Повторное применение DataSource моего шаблона перед моим FindControl или перемещение Find-Control после предварительного рендеринга исправить мою проблему. Был скорее похож на проблему кода 18, но не понял, что это было. Спасибо – 2009-04-20 20:39:18