ASP.NETのRepeater内のコントロールの特定のコントロールに対してアクセスして、その情報を取得したり編集したりする場面があると思います。
そこで、今回はASP.NETのRepeaterコントロール内にある各コントロールの情報を取得する方法を解説していきます。
※VB.NETで記述して解説します
Reapeaterコントロール(aspxファイル)の記述方法
aspxファイルにReapeaterコントロールを記述した際、
当然ながらReapeater内の各コントロールには「runat="server"」を記述してください。(ASP.NET側のサーバー処理でアクセスするために必要です)
<asp:Repeater ID="Repeater" runat="server">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:Repeater>
FindControlで各コントロールにアクセスする
Repeaterコントロール内の各コントロールの情報を取得するためには、
まずはじめに、対象となるRepeaterコントロールを取得(Repeater.Items)し、それをFor文で回します。
そしてRepeater内の各コントロールの情報を取得するためには「FindControl」メソッドを使用する必要があります。
FindControlでは、()内の引数に対象となるコントロールのIDを指定することでそのコントロールの情報を取得することができます。
ただし、その場合、「CType(item.FindControl("Button1"), Button)」のように
CTypeの引数でFindControlで取得するコントロールの種類を指定して変換する必要があります。
For Each item As RepeaterItem In Repeater.Items
Dim TextBox1 As TextBox = CType(item.FindControl("TextBox1"), TextBox)
Dim Button1 As Button = CType(item.FindControl("Button1"), Button)
Next
ASP.NET おすすめ入門講座
3つのWebアプリケーションの開発を通して、ASP.NETについて基礎から学べるおすすめの入門講座がこちら☟
【入門者向け】ASP.NET MVCでWebアプリ開発のノウハウを学ぼう!