- PR -

Repeater内のLabelの値を取得したい

1
投稿者投稿内容
ハヤ
常連さん
会議室デビュー日: 2003/06/04
投稿数: 41
投稿日時: 2003-07-01 17:29
ASP.NET をVS.NET2002を使用して開発しています。言語はC#です。
RepeaterをTemplateを使用して表示しています。画面のボタンを押したときの
処理で、Repeater内の情報を取得したいと考えております。

Repeater内にWEBコントロールのLabelを設定し、ボタンが押されたときに、
FindControlメソッドを使用してLabelを取得し、そのLabelのTextプロパティを
見ることによって取得したいと考えていましたが、Labelコントロール自体の
取得はできたのですが、そのTextプロパティは常に空白です。

考え方としてどこが間違っているのか分からないのと、もし他に方法があれば
それを御教授いただけたら、と思っています。
よろしくお願いします。



.aspx
コード:
<asp:Repeater id="Repeater1" runat="server">
  <ItemTemplate>
    <table border="1" cellpadding="0" cellspacing="0">
      <tr>
        <td><%# DataBinder.Eval(Container.DataItem,"key")   %></td>
        <td>
          <asp:Label id="Label1" runat="server">
            <%# DataBinder.Eval(Container.DataItem,"value") %>
          </asp:Label></td>
      </tr>
    </table>
  </ItemTemplate>
</asp:Repeater>



.aspx.cs
コード:
private void Page_Load(object sender, System.EventArgs e)
{
  if(!IsPostBack)
  {
    //データソースを作成
    SortedList sl = new SortedList();
    sl.Add("1001","月");
    sl.Add("1002","火");
    sl.Add("1003","水");

    this.Repeater1.DataSource = sl;
    this.Repeater1.DataBind();      
  }
}

private void Button1_Click(object sender, System.EventArgs e)
{
  //Repeaterの一行目のLabel1を取得
  Label lbl = (Label)this.Repeater2.Items[0].FindControl("Label1");
  string strLbl = lbl.Text;  //←空白値が取得される。
}



#Templateの使い方は、repeaterもDataGridも同じと考えていいのですよね?
1

スキルアップ/キャリアアップ(JOB@IT)