繁体   English   中英

将数据从TextBox传递到VB.NET中的DataGridView

[英]Pass data from TextBox to DataGridView in VB.NET

我的表单中有两个DataGridView。 一个名为grd_product,另一个名为grd_order。 当我单击grd_product中的单元格时,它将在文本框中显示产品的详细信息。 因此,在用户输入数量后,当用户单击btn_add时,应该会在grd_order中添加新行。 但是我却得到一个错误。

Public Class frm_customer_orderproduct
    Dim current_id As String
    Private Sub frm_customer_orderproduct_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'Dim regDate As Date = Date.Today()

        lbl_user.Text = "Hi, " & custName & "!"

        refresh_grid()
        get_current_id()
    End Sub
    Private Sub refresh_grid()
        Dim mysql As String = "SELECT FLD_PRODUCT_ID, FLD_PRODUCT_NAME, FLD_PRODUCT_PRICE FROM TBL_PRODUCTS"
        Dim mydatatable As New DataTable
        Dim myreader As New OleDb.OleDbDataAdapter(mysql, myconnection)
        myreader.Fill(mydatatable)
        grd_product.DataSource = mydatatable
    End Sub
    Private Sub clear_fields()
        txt_id.Text = ""
        txt_name.Text = ""
        txt_price.Text = ""
        txt_qty.Text = ""
    End Sub
    Private Sub get_current_id()
        Dim current_row As Integer = grd_product.CurrentRow.Index
        current_id = grd_product(0, current_row).Value

        txt_id.Text = current_id
        txt_name.Text = grd_product(1, current_row).Value
        txt_price.Text = grd_product(2, current_row).Value
    End Sub

    Private Sub grd_product_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grd_product.CellClick
        get_current_id()
    End Sub

    Private Sub btn_add_Click(sender As System.Object, e As System.EventArgs) Handles btn_add.Click
        If txt_qty.Text = "" Then
            MsgBox("Please insert quantity")
        Else
            Dim dt As New DataTable
            Dim dr As DataRow

            dt.Columns.Add("Product ID")
            dt.Columns.Add("Product Name")
            dt.Columns.Add("Price")
            dt.Columns.Add("Quantity")
            dr = dt.NewRow
            dr("id") = txt_id.Text
            dr("name") = txt_name.Text
            dr("price") = txt_price.Text
            dr("qty") = txt_qty.Text
            dt.Rows.Add(dr)
            grd_order.DataSource = dt

        End If

    End Sub
End Class

在此处输入图片说明 在此处输入图片说明

假设用户单击添加无限个产品后,它将被添加到grd_order

很明显,datatable dt列名与datarows不同

你应该使用

dr("Product ID")=
dr("Product Name")=
dr("Price")=
dr("Quantity")=

要么

    dr(0)=
    dr(1)=
    dr(2)=
    dr(3)=

我认为您可以尝试以下方法将文本框值添加到datagirdview而不是使用datatable

If Trim(txt_qty.Text) = "" Then
            MsgBox("Please insert quantity")
        Else
            Dim rnum As Integer = datagridviewname.Rows.Add()
            datagridviewname.Rows.Item(rnum).Cells("name_of_productid_column").Value = txt_id.Text
            datagridviewname.Rows.Item(rnum).Cells("name_of_productname_column").Value = txt_name.Text
            datagridviewname.Rows.Item(rnum).Cells("name_of_price_column").Value = txt_price.Text
            datagridviewname.Rows.Item(rnum).Cells("name_of_qty_column").Value = txt_price.Text
End If

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM