27/08/2019, 23:21

[VB.NET] Hướng dẫn sử dụng Combobox trên lưới DataGridView Winform

Xin chào các bạn, bài viết hôm nay, mình sẽ hướng dẫn các bạn sử dụng Combobox trên DataGridview bằng ngôn ngữ lập trình VB.NET Trong bài này, mình sẽ hướng dẫn các bạn, các chọn sản phẩm từ combobox trên datagridview . Và khi chúng ta chọn sản phẩm nào thì ...

Xin chào các bạn, bài viết hôm nay, mình sẽ hướng dẫn các bạn sử dụng Combobox trên DataGridview bằng ngôn ngữ lập trình VB.NET

Trong bài này, mình sẽ hướng dẫn các bạn, các chọn sản phẩm từ combobox trên datagridview.

Và khi chúng ta chọn sản phẩm nào thì sẽ hiển thị cho chúng ta chi tiết của sản phẩm đó.

VD: như số lượng, đơn vị tính, giá và thành tiền.

Sau khi chọn order các sản phẩm, các bạn có thể nhấn nút getData để lấy những thông tin sản phẩm mà các bạn đã chọn.

Ở source code bên dưới mình sử dụng Database Sqlserver 2016 nhé các bạn.

Các bạn tạo một table product và nội dung trên table product mẫu như hình bên dưới:

combobox_datagridview_vb1

Và dưới đây là giao diện demo của ứng dụng:

combobox_datagridview_vb2

Full source code ứng dụng sử dụng Combobox trên DataGridView VB.NET

Imports System.Data.SqlClient
Public Class Form1
    Dim mcn As SqlConnection
    Dim mcm As SqlCommand
    Dim mda As New SqlDataAdapter
    Dim mdt As New DataTable
    Dim mda2 As New SqlDataAdapter
    Dim mdt1 As New DataTable


    Dim mds As New DataSet
    Dim str As String
    Dim instance As DataGridViewComboBoxColumn
    Dim str2 As String


    Dim value As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        str = "Data Source=.;Initial Catalog=DB_INVOICE;Integrated Security=True"
        mcn = New SqlConnection With {
            .ConnectionString = str
        }
        mcn.Open()
        FillGridView1()
    End Sub
    Private Sub FillGridView1()
        '--- Adding the values into the combo box through the List---
        Dim cmbOpt1 As DataGridViewComboBoxColumn = CType(DataGridView1.Columns("Products"), DataGridViewComboBoxColumn)
        'cmbOpt1.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
        Try
            str = "Select * From Tbl_Products order by ID"
            mda = New SqlDataAdapter(str, mcn)
            Dim mdt1 As New DataTable
            mda.Fill(mdt1)
            'If loc.DataSource Is Nothing Then
            cmbOpt1.DataSource = mdt1
            cmbOpt1.DisplayMember = "PrductsName"
            cmbOpt1.ValueMember = "PrductsName"
            DataGridView1.DataSource = mdt
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub ComboBox_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim combo As ComboBox = CType(sender, ComboBox)
        Dim rowIndex = DataGridView1.CurrentCell.RowIndex
        ShowDetailsByProduct(rowIndex, combo.SelectedItem)
    End Sub

    Public Sub ShowDetailsByProduct(ByVal rowIndex As Integer, ByVal dataRow As Object)
        DataGridView1.BeginEdit(True)
        Dim id_product = DirectCast(dataRow, DataRowView).Item("id")
        Dim product = DirectCast(dataRow, DataRowView).Item("PrductsName")
        Dim unit = DirectCast(dataRow, DataRowView).Item("unit")
        Dim quantity = DirectCast(dataRow, DataRowView).Item("quantity")
        Dim price = DirectCast(dataRow, DataRowView).Item("price")


        DataGridView1.Rows(rowIndex).Cells("unit").Value = unit
        DataGridView1.Rows(rowIndex).Cells("quantity").Value = quantity
        DataGridView1.Rows(rowIndex).Cells("price").Value = price
        DataGridView1.Rows(rowIndex).Cells("amount").Value = quantity * price

        DataGridView1.EndEdit()
    End Sub

    Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
        If DataGridView1.CurrentCell.ColumnIndex = 0 Then
            Dim combo As ComboBox = CType(e.Control, ComboBox)
            If (combo IsNot Nothing) Then


                RemoveHandler combo.Enter, New EventHandler(AddressOf ctl_Enter)
                AddHandler combo.Enter, New EventHandler(AddressOf ctl_Enter)

                RemoveHandler combo.SelectionChangeCommitted, New EventHandler(AddressOf ComboBox_SelectionChangeCommitted)


                AddHandler combo.SelectionChangeCommitted, New EventHandler(AddressOf ComboBox_SelectionChangeCommitted)
            End If
        End If
    End Sub

    Public Sub ctl_Enter(sender As Object, e As EventArgs)
        CType(sender, ComboBox).DroppedDown = True
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim table = GetData()
        DataGridView2.DataSource = table
    End Sub

    Private Function GetData() As DataTable
        Dim dt As DataTable = New DataTable()

        For Each col As DataGridViewColumn In DataGridView1.Columns
            dt.Columns.Add(col.Name)
        Next

        For Each row As DataGridViewRow In DataGridView1.Rows
            Dim dRow As DataRow = dt.NewRow()

            For Each cell As DataGridViewCell In row.Cells
                dRow(cell.ColumnIndex) = cell.Value
            Next

            dt.Rows.Add(dRow)
        Next
        Return dt
    End Function
End Class

Và dưới đây là video demo của ứng dụng Combobox GridView

Thanks for watching!

DOWNLOAD SOURCE

Tags: combobox datagridview vb.netcombobox gridview
0