我有一个包含三列的 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/