Transmettre des données de zone de texte à DataGridView dans VB.NET
J'ai deux DataGridView dans mon formulaire. Un nommé grd_product et un autre est grd_order. Lorsque je clique sur une cellule dans grd_product, il va afficher le détail du produit dans la zone de texte. Ainsi, après l'utilisateur d'insérer la quantité, le soi-disant nouvelle ligne sera ajoutée dans grd_order lorsque l'utilisateur clique sur btn_add. Mais j'obtiens une erreur à la place.
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
Soi-disant, une fois que l'utilisateur cliquez sur ajouter pour un nombre illimité de produits, il sera ajouté dans grd_order
Vous devez vous connecter pour publier un commentaire.
Il est assez clair que les colonnes nom de la datatable
dt
est pas le même que des datarowvous devez utiliser
ou
À mon avis, vous pouvez essayer de la manière suivante pour ajouter des valeurs textbox à datagirdview au lieu d'utiliser datatable
No row can be added to a DataGridView control that does not have columns. Columns must be added first.