2016-09-14 76 views
0

我是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" 
+0

运行一个'SELECT'查询只从表中得到你需要的一列,然后用结果填充一个DataTable,并设置'combobox.DataSource = DataTable' – David

+0

开始为它创建一个'DataGridViewComboboxColumn'。使用项目的数据源或在设计师中设计它 – Plutonix

+0

你能告诉我怎么做吗? –

回答

0
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 
相关问题