在第三个嵌套转发器中查找动态添加的控件

时间:2012-01-08 16:07:35

标签: .net findcontrol datarepeater

我有三个中继器。让我们称它们为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:指定的参数不在   有效值范围。参数名称:index“。

为什么我会收到此错误?我如何获取R3内部的HtmlGenericControl?

编辑:抱歉,但我忘了添加只有R1在Page_Init中填充DataBind()。其他两个Repeater填充OnItemDataBound事件。

当我在R1中循环出所有控件时,我得到一堆命中。但是,即使我在我的网站上看到它们,我也从R2中得不到任何东西。

1 个答案:

答案 0 :(得分:1)

您需要在多行中执行此操作,而不是在一行中执行此操作:

您可能还想添加一些错误检查

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")
    }
  }
}