Pages

2015/04/14

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) としてキャストしても良い。
Related Posts Plugin for WordPress, Blogger...