我正在使用ASP .NET创建一个电子商务网站,我使用文字控件从数据库中动态地将产品添加到购物页面:
foreach (DataRow dr in dt.Rows)
{
string productName = dr["PRO_Name"].ToString();
string productPrice = dr["PRO_Price"].ToString();
string myUrl = "Handler.ashx?ProdID=" + dr["PRO_ID"].ToString();
string sProduct = @"<div class='four-shop columns isotope-item'><div class='shop-item'><figure><img src='" + myUrl + "'/><figcaption class='item-description'><h5>" + productName + "</h5><span>R" + productPrice + "</span></figcaption></figure></div></div>";
productPanel.Controls.Add(new LiteralControl(sProduct));
}
我想知道如何添加一个按钮,其中包含我的文字控件中的单击事件。我已创建此按钮但无法将其添加到文字控件,因为文字控件只显示标记而不是服务器端控件。如何从数据库中添加到购物页面的每个产品动态添加此按钮。
Button button = new Button();
button.Text = "Add to cart";
button.Click += button_Click;
答案 0 :(得分:0)
而不是使用文字控制。您可以直接在页面控件中添加它,如果您仍然热衷于使用容器控件,那么请使用面板控件。
此致
答案 1 :(得分:0)
我建议你为你的产品构建一个用户控件。构建一个控件,例如:一个Image控件,一个描述标签控件,价格标签等,以及一个添加到购物车的按钮等。
通过这种方式,您可以为显示的每个产品动态创建控件,在添加按钮中添加代码,并为每个产品设置代码中的图像,描述等产品属性。</ p>
用户控件将在页面上呈现为普通HTML,但它允许您在代码中使用“控件”/对象,为每个产品。
答案 2 :(得分:0)
为什么不使用Repeater,而不是做这样的动态。这将使您免于头痛:
<asp:Repeater id="repeat" runat="server">
<ItemTemplate>
<div class='four-shop columns isotope-item'><div class='shop-item'><figure><img src='<%#string.Format("Handler.ashx?ProdID={0}",Eval("PRO_ID")) %>'/><figcaption class='item-description'><h5><%#Eval("PRO_Name")%> </h5><span><%#Eval("PRO_Name")%> </span></figcaption></figure></div></div>
<asp:button id="btnAdd" runat="server" Text="Add to Cart" OnClick="btnAdd_Click" />
</ItemTemplate>
</asp:Repeater>
在后面的代码中,您可以为按钮单击定义处理程序:
protected void btnAdd_Click(object sender, EventArgs e)
{
//handle add for the product here
}
答案 3 :(得分:0)
像这样使用
Button button = new Button();
button.Text = "Add to cart";
button.Click += button_Click;
productPanel.Controls.Add(button );
添加文字控件后。如果你想要它在LiteralControl
(即sProduct)之间的某个地方,你必须把它分成两个。
像这样,
string sProduct = @"<div class='four-shop columns isotope-item'><div class='shop-item'><figure><img src='" + myUrl + "'/><figcaption class='item-description'><h5>" + productName + "</h5><span>R" + productPrice + "</span></figcaption></figure>";
productPanel.Controls.Add(new LiteralControl(sProduct));
Button button = new Button();
button.Text = "Add to cart";
button.Click += button_Click;
productPanel.Controls.Add(button );
productPanel.Controls.Add(new LiteralControl("</div></div>"));
但是,建议不要使用像这样的LiteralControl。您可以在此方案中使用HtmlGenericControl。
答案 4 :(得分:0)
尝试这种方法。
Table tb = new Table();
for (int i = 1; i <= 10; i++)
{
TableRow tr = new TableRow();
TableCell td = new TableCell();
Button bt = new Button();
bt.ID = i.ToString();
bt.Text = "Button " + i.ToString();
bt.Click += new EventHandler(btn_Click);
td.Controls.Add(bt);
tr.Controls.Add(td);
tb.Controls.Add(tr);
}
dvTest.Controls.Add(tb);