0

リピーターが3人います。それらをR1、R2、R3と呼びましょう。

ではR3、 で一連のコントロールを作成しますPage_Init。たとえば、これらのコントロールの 1 つに という名前があり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 を取得するにはどうすればよいですか?

編集: 申し訳ありませんが、R1 のみが Page_Init で DataBind() を埋められることを追加するのを忘れていました。他の 2 つの Repeater は、OnItemDataBound イベントで満たされます。

R1 のすべてのコントロールをループ アウトすると、ヒットが大量に発生します。しかし、自分のサイトでそれらを見ることができても、R2 からは何も得られません。

4

1 に答える 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 に答える