0

C#

protected void imgbtn5_Click(object sender, EventArgs e)
{
    Session["theme"] = lbl5.Text;
    foreach (ListViewItem item in theme5.Items)
    {
        Label country = (Label)item.FindControl("lblcountry");
        Session["country"] = country.ToString();        
        Label price = (Label)item.FindControl("lblprice");
        Session["price"] = price.ToString();         
    }       
}

ここでは、foreach セッション値が再び null になるためです。他の方法を提案してください。

aspx

<asp:ListView ID="theme5" runat="server" DataSourceID="SqlDataSource5">
<ItemTemplate>
<asp:Label ID="lblcountry" runat="server" Text='<%#Eval("Country") %>' />
</ItemTemplate>
</asp:ListView>

ここでは、ラベルのテキスト値を取得してセッションに転送したいと考えています。問題があると思います:

Label country = (Label)theme5.FindControl("lblcountry");

ここの国では、ダブギング中にnull値が見つかりました。

4

3 に答える 3

1

ラベル テキストの代わりにラベルを追加しています

protected void imgbtn5_Click(object sender, EventArgs e)
{
    Session["theme"] = lbl5.Text;
    foreach (ListViewItem item in theme5.Items)
    {
        Label country = (Label)item.FindControl("lblcountry");
// here insted of country.ToString() you Should use 
        Session["country"] = country.Text.ToString();        
        Label price = (Label)item.FindControl("lblprice");
        Session["price"] = price.Text.ToString();         
    }       
}
于 2012-09-17T12:38:12.650 に答える
0

このコードで試すことができます

var index = ...;

var result = (label)theme5.Items[index].FindControl("lblcountry");

このコードはに基づいて使用できますItemcommand

<asp:ListView ID="theme5" runat="server" DataSourceID="SqlDataSource5">
    <ItemTemplate>
    <asp:Button ID="btn"
    Text="..."
    CommandName="YourCommand"
    CommandArgument='<%# Container.DataItemIndex %>'
    runat="server"   ItemCommand="Test_ItemCommand" />
    </ItemTemplate>
</asp:ListView>



protected void Test_ItemCommand(object sender, ListViewCommandEventArgs e)
{

 if (e.CommandName.Equals("YourCommand"))
 {
      var result = (label)theme5.Items[Convert.ToInt32(e.CommandArgument)].FindControl("lblcountry"); 
 }

}
于 2012-09-17T09:02:40.207 に答える
0

theme5 の現在選択されている項目にアクセスし、その項目のラベルを取得する必要があると思います:

Label lblcountry = 
  (Label)theme5.Items[theme5.SelectedIndex].FindControl("lblcountry");
于 2012-09-17T09:04:30.613 に答える