【问题标题】:show data from sql server in datagridview combobox column在 datagridview 组合框列中显示来自 sql server 的数据
【发布时间】:2016-09-15 23:21:05
【问题描述】:

我是 DataGridView 的新手,我通常使用列表视图 我的程序从 sql server 检索数据并在 datagridview 中显示 那么如何将其中一列设为组合框并向其添加子项并在组合框中显示来自数据库的当前值?

这是我显示数据的代码:

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"

【问题讨论】:

  • 运行SELECT 查询以从表中获取您需要的一列,然后用结果填充DataTable,并设置combobox.DataSource = DataTable
  • 首先为它创建一个DataGridViewComboboxColumn。使用项目的数据源或在设计器中设计它
  • 你能告诉我怎么做吗?

标签: vb.net datagridview


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 2015-10-23
    • 2013-12-03
    • 2013-09-03
    • 1970-01-01
    • 2011-12-18
    • 2013-12-08
    • 1970-01-01
    相关资源
    最近更新 更多