Repeater のコントロール値を取得・設定
Repeater コントロールに配置したコントロールの値をいじりたい場合は、一手間かける必要がある。
画面
画面
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <ltItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" /> <asp:Label ID="Label1" runat="server" Text=""></asp:Label> </ItemTemplate> <asp:Repeater>コード
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { if (e.Item.FindControl("Label1") != null) { Label lbl = e.Item.FindControl("Label1") as Label; lbl.Text = "てすと"; } if (e.Item.FindControl("CheckBox1") != null) { CheckBox chk = e.Item.FindControl("CheckBox1") as CheckBox; chk.Checked = true; } } }
- FindControl は万が一コントローラーが見つからなかった場合は NULL になってしまうため、その状態でプロパティにアクセスすると落ちるので注意する。
- as Label などは (Label) としてキャストしても良い。