protected void viewHoursButton_OnClick(object sender, EventArgs e)
{
var viewHoursPopup = parentGridView.FindControl("viewHoursPopup")
as WebControl;
var viewHoursGridView = parentGridView.FindControl("viewHoursGridView");
if (viewHoursPopup != null && viewHoursGriView != null)
{
viewHoursPopup.Show();
viewHoursGridView.DataBind();
}
}
...или же...
protected void viewHoursButton_OnClick(object sender, EventArgs e)
{
var viewHoursButton = (Button)sender;
var viewHoursPopup = viewHoursButton.Parent.FindControl("viewHoursPopup")
as WebControl;
var viewHoursGridView = viewHoursButton.Parent.FindControl("viewHoursGridView");
if (viewHoursPopup != null && viewHoursGriView != null)
{
viewHoursPopup.Show();
viewHoursGridView.DataBind();
}
}
Почему?
Itemtemplates, Rowtemplates, Edittemplates и т. Д. Все вложены в то, что WebForms называет NamingContainers. Вы не можете получить доступ к этим элементам управления, потому что они динамически вводится во время выполнения, их идентификаторы управления не отображаются автоматически с помощью частичного автоматического класса CodeBhind.
Есть 2 решения:
Оберните содержание вашего шаблона в UserControl. Что usercontrol Codebhind будет иметь доступ времени компиляции к любым элементам управления, которые не вложены в другие шаблоны. Чтобы обеспечить взаимодействие между USERCONTROL и родительским шаблоном, который его содержит, разоблачает события и общественные свойства на UserControl
Используйте .findControl (String ControlID), чтобы «поиск» текущих шаблонов содержания управления, чтобы найти элемент управления, который вы ищете. Просто обязательно проверьте их против NULL, прежде чем пытаться что -либо вызвать на них, и что они подходят к соответствующему типу, исходя из того, какие методы вы намереваетесь привести к им.