我有三个中继器。让我们称它们为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中得不到任何东西。
答案 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")
}
}
}