0

我有三个中继器。让我们称它们为 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:指定的参数超出了有效值的范围。参数名称:索引”。

我怎么会收到这个错误?以及如何在 R3 中获取 HtmlGenericControl?

编辑:对不起,但我忘了在 Page_Init 中添加只有 R1 填充 DataBind()。其他两个中继器在 OnItemDataBound 事件中填充。

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

4

1 回答 1

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")
    }
  }
}
于 2012-01-08T17:45:07.530 回答