单击GridView中的按钮后,返回GridView中DropDownList对应的SelectedValue



我正在VB中编写ASP.NET web表单。我有一个GridView,它包含以下列和行:

 Product  |   Price   |   Quantity   |   Add to cart
iPhone 6  |   $6000   |(DropDownList)|    (Button)
iPhone 5  |   $5000   |(DropDownList)|    (Button)

GridView的行数取决于SQL Server数据库中的PRODUCT表。

Product列从PRODUCT表中获取product_name

Price列从PRODUCT表中获取product_price

TemplateFieldQuantity在每行上具有DropDownList(成员:1、2、3)。

TemplateFieldAdd to cart在每一行上具有Button

我想做什么

单击nth行上的Button应仅提交nth行上DropDownListSelectedValue

如果DropDownList1Button不在GridView中(它们在Web表单中只出现一次),我可以使用DropDownList1.SelectedValue,但我不知道当它们在GridView中时,我如何做同样的事情。

我的问题是:如何以最简单的方式获得GridViewDropDownListSelectedValue

以下代码可能会有所帮助。第一个代码块是GridView的,我想你已经用过了。想法是有一个TemplateField和具有rowcommand事件集的网格视图。TemplateField将具有LinkButton,命令名为CartAdd,当RowCommand被激发时,您将在第二个代码块中获得该事件,并从中获得DropDownList的相应选定值。

<asp:GridView ID="gvw" 
AutoGenerateColumns="False" 
            runat="server"  
            onrowcommand="gvw_RowCommand">
.... .
    <asp:TemplateField HeaderText="View More">
    <ItemTemplate>
        <asp:LinkButton ID="btnCartAdd" CommandArgument='<%# Container.DataItemIndex %>'
            CommandName="CartAdd" runat="server" Text="Add to cart" />
    </ItemTemplate>
   </asp:TemplateField>

代码隐藏的下一个代码块。

Protected Sub gvw_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
    If e.CommandName = "CartAdd" Then
        Dim index As Integer = Convert.ToInt32(e.CommandArgument.ToString())
        Dim ddl As DropDownList = CType(gvw.Rows(index).FindControl("DDL_ID"), DropDownList) 'replce DDL_ID with required id used for dropdownlist
        Dim val As String = ddl.SelectedValue
    End If
End Sub

相关内容

  • 没有找到相关文章

最新更新