Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 向现有动态数据表添加新行_Vb.net_Datatable_Row_Add - Fatal编程技术网

Vb.net 向现有动态数据表添加新行

Vb.net 向现有动态数据表添加新行,vb.net,datatable,row,add,Vb.net,Datatable,Row,Add,我有一个从数据库创建的动态数据表。我想添加一个新行空白,因此有一个选项可以在combobx中不选择任何内容。在不添加新行的情况下,一切正常。但是,当我添加新行时,组合框将不显示任何内容。我错过了什么 这是密码 Dim DT As New DataTable DT = DS.Tables("CallStatus") Dim drNewRow As DataRow = DT.NewRow 'Add new row drNewRow.Item("CampaignCallStatusID") = "

我有一个从数据库创建的动态数据表。我想添加一个新行空白,因此有一个选项可以在combobx中不选择任何内容。在不添加新行的情况下,一切正常。但是,当我添加新行时,组合框将不显示任何内容。我错过了什么

这是密码

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

在您的示例中,空白行的活动调用状态为空,因此组合框中的显示将为空。如果您认为应该在当前显示的记录中显示一个数据库值,则将空白行活动调用状态更改为“调试”值,以确认正在显示的空白行。


<> P>在组合框中显示空白行的原因很可能是因为Actudio CalrasStudid与Actudio CalrasStudid的数据库类型不一样。尝试将空白行值从0更改为.< /p> 。在您的示例中,空白行的Actudio Calm状态为空,因此组合框中的显示将为空。如果您认为应该在当前显示的记录中显示一个数据库值,则将空白行活动调用状态更改为“调试”值,以确认正在显示的空白行。
<> P>在组合框中显示空白行的原因很可能是因为Actudio CalrasStudid与Actudio CalrasStudid的数据库类型不一样。尝试将空白行值从0更改为.< /p> ,可以尝试遍历所有所需行并手动添加到组合框中。 例如:

ComboBox.Items.Clear()
For Each dr as DataRow in DT.Rows
    ComboBox.Items.Add(dr("col1").ToString())
Next

当数据绑定失败时,这保证可以工作。

您可以尝试迭代所有所需的行,并手动将它们添加到组合框中。 例如:

ComboBox.Items.Clear()
For Each dr as DataRow in DT.Rows
    ComboBox.Items.Add(dr("col1").ToString())
Next

当数据绑定失败时,这保证可以工作。

我找到了一个解决方案。我使用了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()

我找到了解决办法。我使用了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()

谢谢你的回答。我找到了解决办法。谢谢你的回答。我找到了解决方案。解决方案是InsertAt还是cboCallStatus.Refresh?在原始问题中没有,如果其中一列不为NULL,则需要将其设置为未使用的值,如-1。这是一个黑客程序。解决方案是InsertAt还是cboCallStatus.Refresh?在原始问题中没有,如果其中一列不为NULL,则需要将其设置为未使用的值,如-1。这是一个黑客。