我有一个转发器控件,显示向客户显示的所有可用产品的列表。这个转发器控件可能每个都有5个项目,并且在转发器的每个itemtemplate中我都有一个添加到购物车的按钮。一旦用户单击此按钮,我想通过VB获取该特定产品的“ID”。请注意,有时在aspx页面中,我可以轻松地将id传递给像这样的href =“”重定向
Dim productid As String = DirectCast(Repeatershowsproducts.Controls(0).FindControl("ID"), Label).Text
它总是返回列表中的第一个产品ID,我希望它选择用户在单击“添加到购物车”按钮后选择的特定产品ID。用户点击了第三个产品,同时显示了第一个产品的ID 继承人我的aspx代码。
<asp:Repeater ID="Repeatershowproducts" runat="server">
<ItemTemplate>
<div class="prtm-block-content bg-primary overflow-wrapper">
<div style="margin-top: 15px;" class="left col-xs-3">
<img class="img-responsive img-circle display-ib" src="<%#Eval("productimgpath")%>" alt="Avatar" title="Sponsor Profile Photo">
</div>
<div style="margin-top: 15px;" class="right col-xs-9">
<p class="font-sm"><i class="fa fa-user"></i>FullName: <span class="font-sm mrgn-b-md fw-bold"><%#Eval("productfullname")%></span></p>
<p class="font-sm"><i class="fa fa-bitcoin"></i>Amount: <span style="word-wrap: break-word;" class="font-sm mrgn-b-md fw-bold"><%#Eval("productprice")%> BTC</span></p>
<p class="font-sm"><i class="fa fa-phone"></i>deleivery days: <span class="font-sm mrgn-b-md fw-bold"><%#Eval("productdelivery")%></span></p>
<p class="font-sm"><i class="fa fa-globe"></i>Product location: <span class="font-sm mrgn-b-md fw-bold"><%#Eval("productcountry")%></span></p>
<p class="font-sm">Status: <span class="font-sm mrgn-b-md fw-bold"><%#Eval("Status")%></span></p>
<asp:Label ID="lblproductid" runat="server" Text='<%#Eval("ID")%>'></asp:Label>
</div>
<center>
<div class="text-center center">
<asp:Button ID="Button1" OnClick="addtocart" CssClass="btn btn-lg fw-bold btn-primary btn-rounded" runat="server" Text="Add product to cart" />
</div>
</div>
</center>
</div>
<hr />
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:0)
最简单的方法是将按钮从OnClick
更改为OnCommand
,然后在按钮上添加CommandArgument
。
<asp:Button ID="Button1" OnCommand="Button1_Command"
CommandArgument='<%# Eval("itemid") %>' runat="server" Text="Add product to cart" />
然后在后面的代码中读取该值。
Protected Sub Button1_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
Dim ProductID As Integer = Convert.ToInt32(e.CommandArgument)
End Sub