Это мой внешний код для моего продукта в ListView.
<div class = "col-md-3">
<div class = "card shadow">
<div class = "inner">
<div class = "title">
<asp:Label ID = "lblprodId" runat = "server" Text='<%# Eval("flavourID") %>' Style = "display: normal"></asp:Label>
<h3><%# Eval("flavourName") %></h3>
</div>
<img class = "prodImg" src = "pizza/<%# Eval("flavourImg") %>" alt = "Card image cap">
<center><div class = "btn"><div><asp:Button ID = "btnShowOrder" runat = "server" Text = "Order This" CssClass = "button" OnClick = "btnShowOrder_Click"/></div></div></center>
</div>
</div>
</div>
А это мой файл .cs.
protected void btnShowOrder_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in prodList.Items)
{
int index = 0;
Label lblprodId = prodList.Items[index].FindControl("lblprodId") as Label;
Session["prodID"] = lblprodId.Text.ToString();
}
//Session["prodID"] = lblprodId.Text;
}
Прямо сейчас я могу получить идентификатор продукта только для 1-го элемента. Несмотря на то, что я нажимаю на другой продукт, идентификатор, отображаемый в моей корзине, является первым идентификатором продукта.





Вам не нужна петля foreach. Вы можете использовать NamingContainer, чтобы получить правильное значение.
protected void btnShowOrder_Click(object sender, EventArgs e)
{
//cast the sender back to a button
Button btn = sender as Button;
//get the current item from the listview namingcontainer
ListViewItem item = btn.NamingContainer as ListViewItem;
//use findcontrol to locate the label in that item
Label lbl = item.FindControl("lblprodId") as Label;
//show result in label outside listview
Label1.Text = lbl.Text;
}
ASPX
<asp:ListView ID = "ListView1" runat = "server">
<ItemTemplate>
<asp:Label ID = "lblprodId" runat = "server" Text='<%# Eval("flavourID") %>'></asp:Label>
<asp:Button ID = "btnShowOrder" runat = "server" Text = "Button" OnClick = "btnShowOrder_Click"/>
</ItemTemplate>
</asp:ListView>
Это невозможно. Попробуйте мой код на отдельной странице и убедитесь, что он работает. Вы привязали данные к ListView в IsPostBack проверке.
Я могу получить свой идентификатор продукта. Спасибо :)
попробовал, я все еще получаю 1-й идентификатор продукта вместо идентификатора продукта, который я нажимаю.