我有一個帶有 3 個 TextBox 列和 1 個 ComboBox 列的 DataGridView。我嘗試使用其他表中的資料填充 ComboBox 列但沒有結果,我們將不勝感激。
這是代碼
Dim conn As OleDb.OleDbConnection = DBConnect.getDbConnection()
dgv.Rows.Clear()
Try
Dim selectSql = "select idf,cb,rgso from libroacquisti "
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(selectSql, conn)
Dim ds As DataSet = New DataSet
da.Fill(ds, "Libroacquisti")
Dim dt As DataTable = ds.Tables("libroacquisti")
Dim row As DataRow
If dt.Rows.Count > 0 Then
For Each row In dt.Rows
Me.dgv.Rows.Add(row("idf"),row("cb"), row("rgso"),THIS IS COMBOBOX COLUMN AND I SHOULD WANT TO POPULATE IT FROM ANOTHER TABLE BY SQL QUERY )
Next row
End If
但是,必須考慮到DataGridView的每一行,在相關的ComboBox中,資料總是相同的,并且是從同一個表中提取的。
uj5u.com熱心網友回復:
為了從表資料中填充組合框列,您需要為組合框設定單獨的資料集和系結源以從中提取資料。
使用您的“子”表填充您的資料集,該表將被資料網格視圖中的資料參考。對于組合框,您只需要兩列。一個用于將由 DataGridView 的 ComboBoxColumn 中的資料參考的 id,另一個用于將顯示的值。
將新的 BindingSource 控制元件拖放到表單設計器中
將 DataSource 屬性設定為 DataSet 并將 DataMember 屬性設定為 DataSet 中的表名
然后將 ComboBoxColumn 的 DataSource 屬性設定為 BindingSource 并設定其 DisplayMember 和 ValueMember 屬性。
現在,您的 DataGridView 應該為每一行選擇適當的值,并填充組合框串列,顯示在您設定為 DisplayMember 的資料集中填充的值:
Dim selectSql = "select ValueColumn,DisplayColumn "
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(selectSql, conn)
Dim ds As DataSet = New DataSet
da.Fill(ds, "ComboValues")
BSComboValues.DataSource = ds
BSComboValues.DataMember = "ComboValues"
Dim ComboColumn As DataGridViewComboBoxColumn = dgv.Columns("ComboColumnName")
ComboColumn.DataSource = BSComboValues
ComboColumn.ValueMember = "ValueColumn"
ComboColumn.DisplayMember = "DisplayColumn"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442649.html
