Visual C# .NETのRepeater コントロールについて
リストのデータを繰り返し画面に表示する場合に、for()文を使っていましたが、
Visual C# .NETでRepeaterコントロールを使って、シンプルに繰り返し処理を書く方法があったのでご紹介いたします。
※データベースは、Microsoft SQL Serverへの接続で説明しています。
表示するデータの内容
表示するデータは以下の3件とします。
データベース名:authors au_id au_name au_from au_hobby icon ------------------------------------------------------------------------- tarou_yamamoto 山本 太郎 日本 旅行 1 hanako_yamamda 山田 花子 日本 映画鑑賞 3 micheal_mead Micheal Mead アメリカ ダンス 2
index.aspx.csの記述
データベースの内容を取得し、画面にデータバインドする処理を記します。
parentRepeaterが、次に説明するデータ表示部分のidと同じになっています。
public void Page_Load(object sender, EventArgs e) { //コネクション取得 SqlConnection cnn = new SqlConnection("server=(local);database=pubs; Integrated Security=SSPI"); SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn); //Create and fill the DataSet. DataSet ds = new DataSet(); cmd1.Fill(ds,"authors"); //データベースから取得したデータを画面側にセット parentRepeater.DataSource = ds.Tables["authors"]; parentRepeater.DataBind(); //コネクションクローズ cnn.Close(); }
index.aspxの記述
以下のようにfor()文を使わないで、シンプルなコードで繰り返し処理が可能です。
<table class="p" border="1" cellspacing="0" cellpadding="3" width="25%"> <!-- 項目表示 --> <tr class="ss"> <th>アイコン</th> <th>名前(出身地)</th> <th>趣味</th> </tr> <!-- 繰り返し処理部分 start --> <asp:Repeater id="parentRepeater" runat="server"> <tr align="center"> <td> <!-- アイコン --> <img src="./img/<%# DataBinder.Eval(Container.DataItem, "icon") %>.gif"> </td> <td> <!-- 名前 --> <%# DataBinder.Eval(Container.DataItem, "au_name") %> <!-- 出身地 --> (<%# DataBinder.Eval(Container.DataItem, "au_from") %>) </td> <td> <!-- 趣味 --> <%# DataBinder.Eval(Container.DataItem, "au_hobby") %> </td> </tr> </asp:Repeater> <!-- 繰り返し処理部分 end --> </table>