我有一个从数据库创建的动态数据表。我想添加一个新行(空白),因此可以选择在组合框中选择任何内容。没有添加新行,一切正常。但是当我添加一个新行时,组合框没有显示任何内容。我错过了什么?
这是代码
Dim DT As New DataTable
DT = DS.Tables("CallStatus")
Dim drNewRow As DataRow = DT.NewRow
'Add new row
drNewRow.Item("CampaignCallStatusID") = ""
drNewRow.Item("CampaignCallStatus") = ""
DT.Rows.Add(drNewRow)
DT.AcceptChanges()
'Fill combobox
With cboCallStatus
.DataSource = DT
.DisplayMember = "CampaignCallStatus"
.ValueMember = "CampaignCallStatusID"
End With
答案 0 :(得分:4)
我找到了解决方案。我使用了InsertAt方法,并将行放在顶部。
Dim DT As New DataTable
DT = DS.Tables("CallStatus")
Dim drNewRow As DataRow = DT.NewRow
DT.Rows.InsertAt(drNewRow, 0) ' <== This is the solution
DT.AcceptChanges()
With cboCallStatus
.DataSource = DT
.DisplayMember = "CampaignCallStatus"
.ValueMember = "CampaignCallStatusID"
End With
cboCallStatus.Refresh()
答案 1 :(得分:0)
在您的示例中,空白行的CampaignCallStatus为空,因此组合框中的显示将为空。如果您认为应在当前显示的记录中显示其中一个数据库值,则将空白行CampaignCallStatus更改为值(例如Debug)以确认正在显示空白行。
组合框中显示空行的原因很可能是因为CampaignCallStatusID与CampaignCallStatusID的数据库类型不同。尝试将空行值从“”更改为0。
答案 2 :(得分:0)
您可以尝试迭代所有需要的行并手动将它们添加到ComboBox 一个例子如下:
ComboBox.Items.Clear()
For Each dr as DataRow in DT.Rows
ComboBox.Items.Add(dr("col1").ToString())
Next
当数据绑定失败时,这可以保证正常工作。