У меня есть подобный кодASP.net FindControl возвращает нуль
protected void Button1_Click(object sender, EventArgs e)
{
Table t = new Table() ;
t.ID = "T1";
t.Visible = true;
MyPanel.Controls.Add(t);
}
protected void Button2_Click(object sender, EventArgs e)
{
Table t = (Table)MyPanel.FindControl("T1");
}
У меня есть проблема там: Table t = (Table)MyPanel.FindControl("T1");
В переменном т, то теперь ссылаться на нуль. Мне кажется, что приложение не знает о сгенерированном кодом . Должен ли я «регистрировать» таблицу где-то еще, кроме только для MyPanel? Спасибо за ответы.
EDIT Более подробная информация о проблеме
У меня есть простая страница без masterPage.There является Gridview с номерами. Эти цифры означают, сколько строк и ячеек будет иметь новый TAble. Когда пользователь выбирает строку, я хочу создать соответствующую таблицу, и после нажатия второй кнопки мне нужно собрать информацию из таблицы. OnInit или PreRender Я не знаю, сколько строк мне понадобится. Означает ли это, что моя проблема технически невозможна?
Прежде всего вы добавляете таблицу в Panel1 и находите ее в MyPanel. Как вы найдете таблицу? –
На всякий случай, если ваш образец не является полным представлением, обратите внимание на то, что 'FindControl' ищет только глубину 1-го уровня детей - вам может потребоваться повторная регистрация более детальных элементов управления - см. Http://stackoverflow.com/questions/8589950/findcontrol -return-null – StuartLC
Но я точно знаю, что такое родитель и ребенок, или я ошибаюсь? – Foxxed