2017-08-28 12 views
0

データリストのボタンをクリックしてラベルを更新しようとしています。しかし、私は表示される各値を選択する方法を見つけることができないようですので、リストの3番目の項目のボタンを押すと、その値をLabel1に表示するか、または5番目の項目をクリックすると表示されますそれはLabel1として。私はDataList1.Items [0] .FindControlのように直接値を取得することができます。ボタンをクリックすると、リスト内の各アイテムから値を取得するにはどうすればよいですか。 `DataList内の動的値のラベルとして

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox> 
    <asp:DataList ID="DataList1" runat="server" DataKeyField="TempID" DataSourceID="SqlDataSource1"> 
     <ItemTemplate> 
      User: 
      <asp:Label ID="UserLabel" runat="server" Text='<%# Eval("User") %>' /> 
      <br /> 
      Time: 
      <asp:Label ID="TimeLabel" runat="server" Text='<%# Eval("Time") %>' /> 
      <br /> 
      ActualTime: 
      <asp:Label ID="ActualTimeLabel" runat="server" Text='<%# Eval("ActualTime") %>' /> 
      <br /> 
      TempID: 
      <asp:Label ID="Label2" runat="server" Text='<%# Eval("TempID") %>' /> 
      <br /> 



ここで`

がコードである:以下は私のコードがある(私も同様にすることを埋めるための試みで、テキストボックスを追加しました)背後:

protected void Page_Load(object sender, EventArgs e) 
{ 

} 
void BindList() 
{ 
    DataList1.DataSource = DataList1; 
    DataList1.DataBind(); 
} 
public void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    DataList1.SelectedIndex = e.Item.ItemIndex; 
    BindList(); 
    Label1.Text = "You selected: " + 
        ((Label)DataList1.SelectedItem.FindControl("ActualTimeLabel")).Text; 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 

    int count = DataList1.Items.Count; 
    for (int i = 0; i < count; i++) 
    { 
     Label lbl = DataList1.Items[0].FindControl("ActualTimeLabel") as Label; 
     string labeltext = lbl.Text; 

     TextBox1.Text = labeltext; 
    } 
} 


protected void Button2_Click(object sender, EventArgs e) 
{ 

} 

}

+0

そのを[タグ:リサイズ]または[タグ:Webフォーム]、そしてどこボタンの宣言はありますか? – AsifAli72090

+0

これはウェブフォームで、ボタンはDataListの内側にあります – Marcus

答えて

1

ボタンにCommandName="Selected"プロパティを追加し、同じようItemCommandイベントでそれを使用します。

public void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    if(e.CommandName == "Selected") 
    { 
     Label lbl = e.item.FinControl("ActualTimeLabel") as Label; 
     Label1.Text = "You selected: " + lbl.Text; 
    } 
} 
関連する問題