2016-09-14 3 views
0

DataGridView에서 새로 왔습니다. 일반적으로 목록보기를 사용하고 있습니다. 내 프로그램은 SQL Server에서 데이터를 검색하고 DataGridview 에 표시하므로 열 중 하나를 만들 수 있습니다. 콤보 박스가되고 하위 항목을 추가하고 데이터베이스에서 오는 콤보 상자의 현재 값을 표시 하시겠습니까? 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 
관련 문제