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) としてキャストしても良い。