我试图在与数据库绑定后将一个项目添加到组合框中,这样组合框可以有这样的东西:
Combobox
<选择选项>
Value 1
Value 2
Value 3
尝试使用下面的代码,但我收到错误 "Items collection cannot be modified when the DataSource property is set." 它's doesn' t允许我在组合框绑定后添加另一个项目 . 如何使用绑定的组合框将额外的项添加到组合框中?
Public Overloads Sub SqLoadCombo2(ByVal comboBox As ComboBox, ByVal cnnStr As String, ByVal TextField As String, ByVal ValueField As String, ByVal sAdditionalText As String, ByVal sAdditionalValue As String, ByVal sTextSeperator As String, ByVal sAdditionalTextDirection As String)
comboBox.Items.Clear()
Dim sAddText() As String
Dim sAddValue() As String
Dim iAddSize As Integer
Dim iCtr As Integer
Dim conn As New SqlConnection("SERVER=192.168.168.200,1433;DATABASE=WBIS_Laos;UID=BISSKG;PWD=BISSKG;Asynchronous Processing=false;")
Dim strSQL As String = cnnStr
Dim da As New SqlDataAdapter(strSQL, conn)
Dim ds As New DataSet
da.Fill(ds, "Disk")
With comboBox
.DataSource = ds.Tables("Disk")
.DisplayMember = TextField
.ValueMember = ValueField
.SelectedIndex = 0
End With
'==Retrieve Additional Text and Value==
If sAdditionalText.ToString <> "" Then
sAddText = sAdditionalText.Split(sTextSeperator)
sAddValue = sAdditionalValue.Split(sTextSeperator)
iAddSize = sAddText.Length
Else
ReDim sAddText(0)
ReDim sAddValue(0)
iAddSize = 0
End If
'**Retrieve Additional Text and Value**
'==Push Additional text into combo based on the direction request==
sAdditionalTextDirection = sAdditionalTextDirection.ToString.Trim.ToUpper
If sAdditionalTextDirection <> "TOP" And sAdditionalTextDirection <> "BTM" Then
sAdditionalTextDirection = "TOP"
End If
If sAdditionalTextDirection = "BTM" Then
For iCtr = 0 To iAddSize - 1
comboBox.Items.Add(sAddText(iCtr))
comboBox.Items(comboBox.Items.Count - 1).Value = sAddValue(iCtr)
Next
Else
For iCtr = iAddSize - 1 To 0 Step -1
comboBox.Items.Insert(0, sAddText(iCtr))
comboBox.Items(0).Value = sAddValue(iCtr)
Next
End If
End Sub
2 回答
而不是将组合框绑定到
dataAdapter
只是从头开始创建自己的DataTable
- 首先用你想要添加到列表中的字段填充你的表,然后循环读取你将每个项目添加到DataTable
. 在此之后,您可以将表格绑定到组合框 . 下面是我使用它的一个例子我使用BindingSource对象,我连接到源列表,然后将其tye到ComboBox . 所有操作都转移到源并刷新到组合框 . 在带有组合框和按钮的简单样品下方:
结束班
结束班