我正在建立网上购物网站,目前有3种产品。这是产品样本。
首先它是图像,产品名称,描述,价格,ID和"添加到购物车"以编程方式构建的按钮,也是动态的。 您可以看到每个产品都有自己的Button,它也是通过foreach循环创建的。 我很困惑,我怎么能得到我分配给它的那些独特的id?意思是当我点击Add to Cart按钮时,它在foreach循环中给我id = 3。 现在,我想要一个帮助,如何"添加到购物车"按钮标识单击了哪个产品,然后显示产品的所有规格,然后根据它继续。 这是代码示例: 我正在使用3层架构,这里是代码示例:
DataSet ds=obj.searching_product();
DataTable dt = new DataTable();
dt = ds.Tables["Register_Product"];
foreach(DataRow dr in dt.Rows)
{
Literal li2 = new Literal();
li2.Text = "<br/>";
this.Panel1.Controls.Add(li2);
Label lb1 = new Label();
lb1.Text = dr["Name"].ToString();
this.Panel1.Controls.Add(lb1);
//Adding Here's Literal for price, Images and ID etc.
Literal li4 = new Literal();
li4.Text = "<br/>";
this.Panel1.Controls.Add(li4);
Button btn = new Button();
btn.Height = 19;
btn.Width = 100;
btn.Text = "Add to Cart";
btn.Click += new EventHandler(Button_Click);
this.Panel1.Controls.Add(btn);
}
答案 0 :(得分:2)
有几种方法可以做到这一点,您可以创建Button
类的扩展名,使用aa属性来保存ID或更简单的hack 可以使用{{1}在Button的ID中,如:
ItemID
然后在事件处理程序中提取Button btn = new Button();
btn.ID = "btnItem-" + ItemID;
,如:
ItemID
作为旁注,更好的选择是创建自己的按钮类(扩展现有的Button类)并为ItemID添加新属性,更好选项将使用数据绑定来使用void Button_Click(object sender, EventArgs e)
{
Button senderButton = sender as Button;
int itemID = -1;
if (senderButton != null && senderButton.ID.Contains('-'))
{
itemID = int.Parse(senderButton.ID.Split('-')[1]); //or int.TryParse (better)
//work with itemID
}
}
或GridView
控件之类的控件。
答案 1 :(得分:0)
我建议您使用CommandName and CommandArgument或{{3}}控件并查看ItemCommand和按钮的{{3}},或者您也可以直接处理按钮点击并在模板中找到控件获取ID。否则,如果您不想使用这些控件,则必须在客户端提出自己的类似机制,在发回之前将事件名称和ID参数添加到隐藏字段,然后在Page_Load检查中对于这些值并将其委托给适当的行动。