DataGridViewComboBoxColumn

DataGridViewComboBoxColumn

我有一个包含三列的 datagridview,使用 Datareader 填充。 datagridView 中有一个 DatagridViewComboboxcolumn

我希望这个 DatagridViewComboboxcolumn 也应该使用 datareader 填充。

请建议我如何使用 Datareader 将项目添加到 DatagridViewComboboxcolumn。
下面是我尝试过的代码。

这里的博士是 SqlDatareader

Datagridview.Rows.Add(dr("Column1").ToString, dr("Column2"),dr("DatagridViewComboboxcolumn "))

但是当我以这种方式添加时,我在 DatagridViewComboboxcolumn 列上出现错误。
请建议

最佳答案

如前所述,您不能将 DataGridViewColumn 的 DataSource 设置为 DataReader(因为这是一个仅转发的数据库连接对象)。但是,您可以做的是填充 DataTable 并将 DataGridViewColumn 上的 DataSource 设置为该 DataTable。您还需要设置 DataPropertyName(这是 DataGridView 数据源的列名)、ValueMemeber 和 DisplayMember。下面的示例使用 Adventureworks 数据库并使用 4 列(其中之一是组合框 -- ProductIdCombo)填充 DataGridView。只需创建一个表单,在其上放置一个名为 DataGridView1 的 DataGridGridView 控件并运行以下命令。 ProductId 列表明绑定(bind)到组合的基础列(ProductIdCombo 列)确实正在更新 dtProductsInventory DataTable 中的 ProductId 字段。

        Dim dtProductInventory As New System.Data.DataTable
        Dim dtProducts As New System.Data.DataTable

        Using objSqlServer As New System.Data.SqlClient.SqlConnection("Server=LOCALHOST\SQLEXPRESS; Integrated Security=SSPI;Initial Catalog=AdventureWorks")
            objSqlServer.Open()
            Dim sqlCmd As New System.Data.SqlClient.SqlCommand("select * from production.ProductInventory", objSqlServer)
            dtProductInventory.Load(sqlCmd.ExecuteReader)
            sqlCmd.CommandText = "Select * from production.product"
            dtProducts.Load(sqlCmd.ExecuteReader)
        End Using

        DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = dtProductInventory

        Dim colProductIdCombo As New System.Windows.Forms.DataGridViewComboBoxColumn()
        colProductIdCombo.DataSource = dtProducts
        colProductIdCombo.DisplayMember = "Name"
        colProductIdCombo.ValueMember = "ProductId"
        colProductIdCombo.DataPropertyName = "ProductId"
        colProductIdCombo.HeaderText = "ProductIdCombo"
        DataGridView1.Columns.Add(colProductIdCombo)

        Dim colProductId As New System.Windows.Forms.DataGridViewTextBoxColumn()
        colProductId.DataPropertyName = "ProductId"
        colProductId.HeaderText = "ProductId"
        DataGridView1.Columns.Add(colProductId)

        Dim colShelf As New System.Windows.Forms.DataGridViewTextBoxColumn()
        colShelf.DataPropertyName = "Shelf"
        colShelf.HeaderText = "Shelf"
        DataGridView1.Columns.Add(colShelf)

        Dim colQuantity As New System.Windows.Forms.DataGridViewTextBoxColumn()
        colQuantity.DataPropertyName = "Quantity"
        colQuantity.HeaderText = "Quantity"
        DataGridView1.Columns.Add(colQuantity)

关于vb.net - 运行时如何在DatagridView的DatagridViewComboboxColumn中添加Item,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7753536/

10-11 08:38