在转发器控件中获取选定的值

时间:2017-04-30 10:09:51

标签: asp.net vb.net

我有一个转发器控件,显示向客户显示的所有可用产品的列表。这个转发器控件可能每个都有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>

1 个答案:

答案 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