在datagridview组合框中显示来自sql server的数据
问题描述:
我是DataGridView中的新成员我通常使用列表视图 我的程序从sql服务器中检索数据并在datagridview中显示它 所以我如何让列之一是combobox并添加子项目,并显示来自数据库的组合框中的当前值?在datagridview组合框中显示来自sql server的数据
这是我的代码来显示数据:
Public Sub showGV()
Using cmd As New SqlCommand("SELECT * FROM money_sent", Conn)
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Using dt As New DataTable()
sda.Fill(dt)
'Set AutoGenerateColumns False
MetroGrid2.AutoGenerateColumns = False
'Set Columns Count
MetroGrid2.ColumnCount = 12
'Add Columns
Dim bc As New DataGridViewButtonColumn
bc.Tag = False
bc.Text = "Delete"
bc.Name = ""
bc.Width = 25
'MetroGrid1.Columns.Add(bc)
MetroGrid2.Columns.Insert(0, bc)
MetroGrid2.Columns(1).Name = "smoney"
MetroGrid2.Columns(1).HeaderText = "المبلق المرسل"
MetroGrid2.Columns(1).DataPropertyName = "smoney"
MetroGrid2.Columns(2).Name = "moneyt"
MetroGrid2.Columns(2).HeaderText = "العملة"
MetroGrid2.Columns(2).DataPropertyName = "moneyt"
MetroGrid2.Columns(3).Name = "commission"
MetroGrid2.Columns(3).HeaderText = "العمولة"
MetroGrid2.Columns(3).DataPropertyName = "commission"
MetroGrid2.Columns(4).Name = "rname"
MetroGrid2.Columns(4).HeaderText = "أسم المستقبل"
MetroGrid2.Columns(4).DataPropertyName = "rname"
MetroGrid2.Columns(5).Name = "rphone"
MetroGrid2.Columns(5).HeaderText = "هاتف المستقبل"
MetroGrid2.Columns(5).DataPropertyName = "rphone"
MetroGrid2.Columns(6).Name = "rcountry"
MetroGrid2.Columns(6).HeaderText = "البلد المستقيل"
MetroGrid2.Columns(6).DataPropertyName = "rcountry"
MetroGrid2.Columns(7).Name = "sname"
MetroGrid2.Columns(7).HeaderText = "أسم المستقبل"
MetroGrid2.Columns(7).DataPropertyName = "sname"
MetroGrid2.Columns(8).Name = "sphone"
MetroGrid2.Columns(8).HeaderText = "هاتف المستقبل"
MetroGrid2.Columns(8).DataPropertyName = "sphone"
MetroGrid2.Columns(9).Name = "comname"
MetroGrid2.Columns(9).HeaderText = "الشركة المستقبلة"
MetroGrid2.Columns(9).DataPropertyName = "comname"
MetroGrid2.Columns(10).Name = "date"
MetroGrid2.Columns(10).HeaderText = "تاريخ الارسال"
MetroGrid2.Columns(10).DataPropertyName = "date"
MetroGrid2.Columns(11).Name = "note"
MetroGrid2.Columns(11).HeaderText = "الملاحظات"
MetroGrid2.Columns(11).DataPropertyName = "note"
MetroGrid2.Columns(12).Name = "id"
MetroGrid2.Columns(12).HeaderText = "id"
MetroGrid2.Columns(12).DataPropertyName = "id"
MetroGrid2.DataSource = dt
Dim imageb As New DataGridViewButtonColumn
imageb.Tag = False
imageb.Text = "image"
imageb.Name = ""
imageb.Width = 25
'MetroGrid1.Columns.Add(bc)
MetroGrid2.Columns.Insert(10, imageb)
Me.MetroGrid2.Columns("id").Visible = False
End Using
End Using
End Using
End Sub
,这是我希望把它组合框列的列:
MetroGrid2.Columns(2).Name = "moneyt"
MetroGrid2.Columns(2).HeaderText = "العملة"
MetroGrid2.Columns(2).DataPropertyName = "moneyt"
答
This how I did it:
Sub FillGrid()
Dim cbb As New DataGridViewComboBoxColumn() With {.HeaderText ="العملة"}
cbb.Items.Add("شيقل.ج")
cbb.Items.Add("د.اردني")
cbb.Items.Add("د.امريكي")
cbb.Items.Add("يورو")
cbb.Items.Add("ر.صيني")
'ADD BUTTON
Dim btnDelete As New DataGridViewButtonColumn()
Dim btnImage As New DataGridViewButtonColumn()
MetroGrid2.Columns.Insert(0, btnDelete)
MetroGrid2.Columns.Add("", "المبلغ المرسل")
MetroGrid2.Columns.Insert(2, cbb)
MetroGrid2.Columns.Add("", "العمولة")
MetroGrid2.Columns.Add("", "أسم المستقبل")
MetroGrid2.Columns.Add("", "هاتف المستقبل")
MetroGrid2.Columns.Add("", "البلد المستقبل")
MetroGrid2.Columns.Add("", "أسم المرسل")
MetroGrid2.Columns.Add("", "هاتف المرسل")
MetroGrid2.Columns.Add("", "الشركة المستقبلة")
MetroGrid2.Columns.Add("", "تاريخ التسجيل")
MetroGrid2.Columns.Insert(11, btnImage)
MetroGrid2.Columns.Add("", "الملاحظات")
MetroGrid2.Columns.Add("", "ID")
MetroGrid2.Columns(13).Visible = False
Const sql As String = "SELECT * FROM money_sent"
Dim adt As New SqlDataAdapter(sql, Conn)
Dim dt As New DataTable
adt.Fill(dt)
Dim i As Integer
For i = 0 To dt.Rows.Count - 1
MetroGrid2.Rows.Add()
MetroGrid2.Rows(i).Cells(1).Value = dt.Rows(i).ItemArray(1)
Dim cell As DataGridViewComboBoxCell = DirectCast(MetroGrid2.Rows(i).Cells(2), DataGridViewComboBoxCell)
cell.Value = dt.Rows(i).ItemArray(2)
MetroGrid2.Rows(i).Cells(3).Value = dt.Rows(i).ItemArray(3)
MetroGrid2.Rows(i).Cells(4).Value = dt.Rows(i).ItemArray(4)
'DataGridView1.Rows(i).Cells(4).Value = "DELETE"
MetroGrid2.Rows(i).Cells(5).Value = dt.Rows(i).ItemArray(5)
MetroGrid2.Rows(i).Cells(6).Value = dt.Rows(i).ItemArray(6)
MetroGrid2.Rows(i).Cells(7).Value = dt.Rows(i).ItemArray(7)
MetroGrid2.Rows(i).Cells(8).Value = dt.Rows(i).ItemArray(8)
MetroGrid2.Rows(i).Cells(9).Value = dt.Rows(i).ItemArray(9)
MetroGrid2.Rows(i).Cells(10).Value = dt.Rows(i).ItemArray(10)
MetroGrid2.Rows(i).Cells(12).Value = dt.Rows(i).ItemArray(12)
MetroGrid2.Rows(i).Cells(13).Value = dt.Rows(i).ItemArray(0)
Next
End Sub
运行一个'SELECT'查询只从表中得到你需要的一列,然后用结果填充一个DataTable,并设置'combobox.DataSource = DataTable' – David
开始为它创建一个'DataGridViewComboboxColumn'。使用项目的数据源或在设计师中设计它 – Plutonix
你能告诉我怎么做吗? –