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 で入力した文字に勝手に取り消し線が入る

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