ASP.NET 入門

ホーム > リピーター (Repeater) コントロールの使い方 > Repeater コントロールの ItemTemplate 内でコントロールを使う方法

Repeater コントロールの ItemTemplate 内でコントロールを使う方法

前回の記事で基本的なリピーター (Repeater) コントロールの使い方を説明しました。

データソースとバインドして、それを表示するというだけなら、前回の記事程度の内容で済みます。

今回は少しだけ発展させて、Repeater コントロールの ItemTemplate で TextBox 等のサーバー側コントロールを使う方法を紹介します。

ItemTemplate で TextBox を利用する方法

ItemTemplate 内で TextBox を使うのは簡単です。Text 属性にデータをバインドすれば OK です。この時、次のように Text='... のように、 引用符にして Eval で使われる二重引用符と重ならないようにすることだけ注意してください。

リピーターコントロール

この結果、次のように TextBox がデータ数分だけ出力されます。

リピーターコントロール

ID はどのように扱うか?

さて、簡単にデータが表示されることはわかりましたが、このデータにはどのようにアクセスしたらよいでしょうか?

ID は指定されていますが、リピーターコントロールだけに、コントロールは複数個作成されますので ID で一意に TextBox を指定することはできません。

この解決策は次のようになります。

ItemTemplate 内のコントロールに指定される ID は、繰り返し項目の1セット内での ID です。つまり、ItemTemplate (もしくは AlternatingItemTemplate) 内での ID (識別子) です。

ページ全体で一意になる識別子ではありません。

Repeater コントロールの「繰り返し項目」は、Repeater コントロールの Items 属性からアクセス可能です。 Repeater コントロールの Items 属性は RepeaterItem のコレクションです。そして、その名の通り1項目毎は RepeaterItem という型です。

RepeaterItem の FindControl で ID を指定すると、テンプレート内で定義したコントロールが取得できます。

例えば上の例では ItemTemplate 内の TextBox コントロールに textBox1 という ID を割り当てていますので、次のようにして TextBox を取得できます。

リピーターコントロール

尚、実際に出力される HTML では Repeater1_textBox1_n (n は 0, 1, 2, ...) のように、Repeater コントロールの ID、TextBox の ID と連番、という組み合わせで (ページ内で一意の) id が割り振られます。(マスターページを使っているときはもう少し複雑ですが)

ホーム > リピーター (Repeater) コントロールの使い方 > Repeater コントロールの ItemTemplate 内でコントロールを使う方法