[英]Adding and Populating DataGridViewComboBoxcolumn to Bound Datagridview
我試圖允許DataGridView允許用戶編輯字段(為簡單起見,假設它只是Item,每個Item都可以有一個Condition,允許值取自第二個表[Conditions]
例如
我的網格應如下所示:
Item # Qty Condition
123456 10 [ New v] <-- A drop-down
234567 55 [ Used v]
345678 99 [ New v]
etc.
我正在嘗試通過以下方式進行設置:
將網格綁定到第一個Items表(獲取包含Items表每一行實際值的前三列)
創建一個新的DataGridViewComboBoxColumn(“ CondCombo”)並將“條件”表中的所有允許項綁定到該表,
遍歷網格並將每行的CondCombo的值設置為Conditions行的值
隱藏條件(文本)列。
我可以添加並加載帶有Conditions值的列,但是我完全無法設置所選的值以匹配Items表中的Condition。 此外,我在選項卡中單擊或單擊到另一個單元格時,我在組合中所做的所有選擇都將被覆蓋。
這是到目前為止我得到的代碼:非常感謝任何幫助!
Sub SetupGrid(byref myGrid as DataGridView,
myConn as sqlite.sqliteConnection)
Dim myAdapter As System.Data.SQLite.SQLiteDataAdapter
myGrid.VirtualMode = true
myAdapter = new system.data.sqlite.sqliteadapter(_
"Select ID, ItemNum, Qty, Condition FROM Items", myConn)
myAdapter.SelectCommand.CommandType = CommandType.Text
' Fill the main grid with the item data
dim ds as new DataSet
myAdapter.Fill(ds)
myGrid.DataSource = ds.Tables(0)
' Now create and load the ComboBox column
dim cboColumn as new DataGridViewComboBoxColumn
With cboColumn
.DataPropertyName = "ConditionAbbrev"
.name = "CondCombo"
.HeaderText = "Cond"
' Bind the ComboColumn
Dim conditionsAdapter As System.Data.SQLite.SQLiteDataAdapter
Dim condTable As DataTable
using cmd as new Sqlite.sqliteCommand(_
"SELECT ConditionAbbrev FROM Conditions", myconn)
conditionsAdapter.selectCommand = cmd
conditionsApapter.fill(condTable)
end using
.DataSource = condTable
.DataPropertyName = "ConditionAbbrev"
.ValueMember = "ConditionAbbrev"
.DisplayMember = .ValueMember
end with
' Set the selected combo member to be the same as the Condition (text) field value:
for each curRow as dataGridViewrow in myGrid.Rows()
curRow.cells("CondCombo").value = _
curRow.Cells("Condition").value
next
' Hide the Condition (text) field)
myGrid.Columns("Condition").visible = false
' Hide the ID field
myGrid.Columns("ID").visible = false
end sub
您設置的DataPropertyName
錯誤。 您將一個列表綁定到網格,將一個列表綁定到列。 DisplayMember
和ValueMember
是列名/綁定到該列的項目的屬性。 DataPropertyName
是綁定到網格的項目的列/屬性的名稱。 就您而言,在我看來DataPropertyName
應該設置為“ Condition”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.