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

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する