[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:
Và dưới đây là giao diện demo của ứng dụng:
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