将从数据库填充的组合框放入datagridview列

时间:2015-10-01 19:36:16

标签: vb.net sql-server-2008 visual-studio-2013 datagridview combobox

我的问题是我有一个datagridview,我在其中添加了来自数据库的不同产品,每个产品都有4种不同的价格存储在数据库中。 如果ID存在,数据网格填充其信息,我会从我放入文本框的ID中查找它们。这里的一切都很好问题是我想在datagridview中的一个组合框中收集每个产品的所有4个价格。我已经尝试了很多,但没有任何作用。我只能做到这一点:

{state: [counties], state2: [counties], ...}

请帮助我,它几乎完成了我只需要在每一行的组合框中重复每个产品的价格

谢谢

1 个答案:

答案 0 :(得分:0)

你想试试这个例子吗?我知道,它非常简单,但您可以看到如何在网格中的每个组合中使用许多不同的项目:

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btTest.Click
    Dim dgvColumnText As New DataGridViewTextBoxColumn
    Dim dgvColumnCombo As New DataGridViewComboBoxColumn

    dgvColumnText.Name = "Producto"
    dgvColumnText.HeaderText = "Producto"
    myGrid.Columns.Add(dgvColumnText)
    dgvColumnCombo.Name = "Precio"
    dgvColumnCombo.HeaderText = "Precio"
    myGrid.Columns.Add(dgvColumnCombo)

    myGrid.Rows.Add(10)

    For i As Integer = 0 To myGrid.Rows.Count - 1
        myGrid.Rows(i).Cells("Producto").Value = String.Format("Producto {0}", i)
        Dim c As DataGridViewComboBoxCell
        c = CType(myGrid.Item(1, i), DataGridViewComboBoxCell)
        c.Items.Add(String.Format("Precio {0}", i))
        c.Items.Add(String.Format("Precio {0}", CStr(i * 2)))
    Next
End Sub

您只需要添加到表单:DataGridView控件(代码中的myGrid)和一个按钮(btTest)。

如您所见,如果要使用不同的值填充每个单元格,则需要使用DataGridViewComboBoxCell控件。

您会发现另一个问题:当您点击单元格设置价格时,您需要点击两次。如果您不想这样做,则必须使用以下代码:

Private Sub myGrid_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles myGrid.CellClick
    Dim validRow As Boolean = (e.RowIndex <> -1)
    Dim mygrid As DataGridView = CType(sender, DataGridView)

    If TypeOf (mygrid.Columns(e.ColumnIndex)) Is DataGridViewComboBoxColumn AndAlso validRow = True Then
        mygrid.BeginEdit(True)
        Dim c As ComboBox = CType(mygrid.EditingControl, ComboBox)
        c.DroppedDown = True
    End If
End Sub

希望这可以帮到你