Нахождение динамически добавленного элемента управления в третьем вложенном повторителе - PullRequest
0 голосов
/ 08 января 2012

У меня три повторителя. Давайте назовем их R1, R2 и R3.

В R3 я создаю группу элементов управления в Page_Init. Например, один из этих элементов управления имеет имя WMC_image.

Я использую этот код для получения R2:

Page.FindControl("R1").Controls[1].FindControl("R2")

Это отлично работает. Но когда я добавляю код, чтобы получить R3:

Page.FindControl("R1").Controls[1].FindControl("R2").Controls[1].FindControl("R3")

Я получаю ошибку:

"System.ArgumentOutOfRangeException: указанный аргумент вышел из диапазон допустимых значений. Имя параметра: индекс ".

Почему я получил эту ошибку? И как мне получить HtmlGenericControl внутри R3?

РЕДАКТИРОВАТЬ: Извините, но я забыл добавить, что только R1 заполнить DataBind () в Page_Init. Два других повторителя заполняются в событии OnItemDataBound.

Когда я зацикливаю все элементы управления в R1, я получаю кучу хитов. Но я ничего не получаю от R2, даже если я вижу их на своем сайте.

1 Ответ

1 голос
/ 08 января 2012

Вместо того, чтобы делать это в одной строке, вам нужно сделать это в несколько строк:

Возможно, вы захотите добавить также проверку ошибок

Control R1;
Control R2;
Control R3;    

if (Page.HasControls()) {
  R1 = Page.FindControl("R1").Controls[1]
  if ( R1.HasControls()) {
    R2 = R1.FindControl("R2").Controls[1]
    if (R2.HasControls()) {
      R3 = R2.FindControl("R3")
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...