Lysi
asked on
How to add ComboBox in a Windows DataGrid
Can somebody explain me (or give a web link) on how to add a ComboBox (Drop down list) in a datagrid in VB.NET windows form?
Thank You
Thank You
1. bind ur datagrid to a dataset
2. add a tablestyle to ur datagrid
3. add the columns u need to the datagrid
4. give me ur email address to send u the file datagridcomboboxcolumn or u can search for it on the internet
Dim tblstyle As New DataGridTableStyle()
With tblstyle
.MappingName = "tablename"//table to which the datagrid is bound
With .GridColumnStyles
Dim product As New DataGridComboBoxColumn()
product.comboBox1.DataSour ce =tablename1 //table in which u want to fill the combobox
product.comboBox1.DisplayM ember =filed1
product.comboBox1.ValueMem ber = field2
.Add(product)
With .Item(index:=0)
.MappingName = fileldName //the field that is define in tablename
.HeaderText = "Product"
.Alignment = HorizontalAlignment.Left
.Width = 75
.NullText = String.Empty
End With
'Add other columns
End With
end with
DataGrid1.TableStyles.Add( tblstyle)
2. add a tablestyle to ur datagrid
3. add the columns u need to the datagrid
4. give me ur email address to send u the file datagridcomboboxcolumn or u can search for it on the internet
Dim tblstyle As New DataGridTableStyle()
With tblstyle
.MappingName = "tablename"//table to which the datagrid is bound
With .GridColumnStyles
Dim product As New DataGridComboBoxColumn()
product.comboBox1.DataSour
product.comboBox1.DisplayM
product.comboBox1.ValueMem
.Add(product)
With .Item(index:=0)
.MappingName = fileldName //the field that is define in tablename
.HeaderText = "Product"
.Alignment = HorizontalAlignment.Left
.Width = 75
.NullText = String.Empty
End With
'Add other columns
End With
end with
DataGrid1.TableStyles.Add(
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Imports System.Data.OleDb
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
#End Region
Public MyCombo As New ComboBox()
Dim sDBNAme As String = "c:\TestDB\Northwind.mdb"
Dim sConn = "Provider=Microsoft.Jet.OL EDB.4.0;Da ta Source=" & sDBNAme & ";Persist Security Info=False"
Dim con As New OleDbConnection(sConn)
Dim daEmp As New OleDbDataAdapter("Select * From Employees", con)
Public ds As New DataSet()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged
'Fill ComboBox list.
MyCombo.Name = "MyCombo"
MyCombo.Visible = False
MyCombo.Items.Clear()
MyCombo.Items.Add("Sales Representative")
MyCombo.Items.Add("Inside Sales Coordinator")
MyCombo.Items.Add("Vice President, Sales")
MyCombo.Items.Add("Sales Manager")
MyCombo.Items.Add("Flunky" )
daEmp.Fill(ds, "Employees")
'Set the RowHeight of the DataGrid to the height of the ComboBox.
DataGrid1.PreferredRowHeig ht = MyCombo.Height
DataGrid1.DataSource = ds
DataGrid1.DataMember = "Employees"
'Add ComboBox to the Control collection of the DataGrid.
DataGrid1.Controls.Add(MyC ombo)
End Sub
Private Sub DataGrid1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.Paint EventArgs) Handles DataGrid1.Paint
If DataGrid1.CurrentCell.Colu mnNumber = 3 Then
MyCombo.Width = DataGrid1.GetCurrentCellBo unds.Width
End If
End Sub
Private Sub Ctrls_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
If DataGrid1.CurrentCell.Colu mnNumber = 3 Then
MyCombo.Visible = False
If DataGrid1.Item(DataGrid1.C urrentCell ) & "" = "" Then
SendKeys.Send("*")
End If
DataGrid1.Item(DataGrid1.C urrentCell ) = MyCombo.Text
End If
End Sub
Private Sub DataGrid1_CurrentCellChang ed(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChang ed
If DataGrid1.CurrentCell.Colu mnNumber = 3 Then
MyCombo.Visible = False
MyCombo.Width = 0
MyCombo.Left = DataGrid1.GetCurrentCellBo unds.Left
MyCombo.Top = DataGrid1.GetCurrentCellBo unds.Top
MyCombo.Text = DataGrid1.Item(DataGrid1.C urrentCell ) & ""
MyCombo.Visible = True
Else
MyCombo.Visible = False
MyCombo.Width = 0
End If
End Sub
Private Sub DataGrid1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Scroll
MyCombo.Visible = False
MyCombo.Width = 0
End Sub
Private Sub DataGrid1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Click
MyCombo.Visible = False
MyCombo.Width = 0
End Sub
End Class
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
#End Region
Public MyCombo As New ComboBox()
Dim sDBNAme As String = "c:\TestDB\Northwind.mdb"
Dim sConn = "Provider=Microsoft.Jet.OL
Dim con As New OleDbConnection(sConn)
Dim daEmp As New OleDbDataAdapter("Select * From Employees", con)
Public ds As New DataSet()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged
'Fill ComboBox list.
MyCombo.Name = "MyCombo"
MyCombo.Visible = False
MyCombo.Items.Clear()
MyCombo.Items.Add("Sales Representative")
MyCombo.Items.Add("Inside Sales Coordinator")
MyCombo.Items.Add("Vice President, Sales")
MyCombo.Items.Add("Sales Manager")
MyCombo.Items.Add("Flunky"
daEmp.Fill(ds, "Employees")
'Set the RowHeight of the DataGrid to the height of the ComboBox.
DataGrid1.PreferredRowHeig
DataGrid1.DataSource = ds
DataGrid1.DataMember = "Employees"
'Add ComboBox to the Control collection of the DataGrid.
DataGrid1.Controls.Add(MyC
End Sub
Private Sub DataGrid1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.Paint
If DataGrid1.CurrentCell.Colu
MyCombo.Width = DataGrid1.GetCurrentCellBo
End If
End Sub
Private Sub Ctrls_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
If DataGrid1.CurrentCell.Colu
MyCombo.Visible = False
If DataGrid1.Item(DataGrid1.C
SendKeys.Send("*")
End If
DataGrid1.Item(DataGrid1.C
End If
End Sub
Private Sub DataGrid1_CurrentCellChang
If DataGrid1.CurrentCell.Colu
MyCombo.Visible = False
MyCombo.Width = 0
MyCombo.Left = DataGrid1.GetCurrentCellBo
MyCombo.Top = DataGrid1.GetCurrentCellBo
MyCombo.Text = DataGrid1.Item(DataGrid1.C
MyCombo.Visible = True
Else
MyCombo.Visible = False
MyCombo.Width = 0
End If
End Sub
Private Sub DataGrid1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Scroll
MyCombo.Visible = False
MyCombo.Width = 0
End Sub
Private Sub DataGrid1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Click
MyCombo.Visible = False
MyCombo.Width = 0
End Sub
End Class
http://support.microsoft.com/?kbid=323167