gpt4 book ai didi

vb.net - 如何在运行时在DatagridView的DatagridViewComboboxColumn中添加Item

转载 作者:行者123 更新时间:2023-12-03 00:18:50 25 4
gpt4 key购买 nike

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

我希望这个 DatagridViewComboboxcolumn 也应该使用数据读取器填充。

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

这里的 dr 是 SqlDatareader

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

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

最佳答案

如前所述,您无法将 DataGridViewColumn 的 DataSource 设置为 DataReader(因为这是仅向前的数据库连接对象)。但是,您可以做的是填充 DataTable 并将 DataGridViewColumn 上的 DataSource 设置为此 DataTable。您还需要设置 DataPropertyName(这是 DataGridView 数据源的列名称)、ValueMemeber 和 DisplayMember。下面的示例使用 Adventureworks DB 并用 4 列填充 DataGridView(其中一列是组合框 - ProductIdCombo)。只需创建一个表单,在其上放置一个名为 DataGridView1 的 DataGridGridView 控件,然后运行以下命令。 ProductId 列表明绑定(bind)到组合的基础列(ProductIdCombo 列)确实正在更新 dtProductsInventory 数据表中的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com