Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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_Combobox_Datatable_Datasource - Fatal编程技术网

Vb.net 将数据表分配给组合框,然后进行更改

Vb.net 将数据表分配给组合框,然后进行更改,vb.net,combobox,datatable,datasource,Vb.net,Combobox,Datatable,Datasource,VB2010我已经手动创建了一个DataTable,所以它不是来自数据库。我已将其分配给一个组合框,它将显示我的数据列。如果我更改数据表,我是否必须重新建立链接 'assign first table dt = GetFirstTable() cbo.DataSource = dt cbo.DisplayMember = "Time" cbo.ValueMember = "Time" 'print out items in combobox 'assign second table dt =

VB2010我已经手动创建了一个DataTable,所以它不是来自数据库。我已将其分配给一个组合框,它将显示我的数据列。如果我更改数据表,我是否必须重新建立链接

'assign first table
dt = GetFirstTable()
cbo.DataSource = dt
cbo.DisplayMember = "Time"
cbo.ValueMember = "Time"

'print out items in combobox

'assign second table
dt = GetSecondTable()
'cbo.DataSource = dt 'do i have to re-connect here?

'print out items in combobox

似乎如果我不重新建立链接,我会得到相同的项目。我想既然cbo已经链接到dt变量,我不需要每次都重新链接它。这就是工作原理还是我做错了?

当您分配
cbo.DataSource=dt
,然后重新创建
dt
cbo.DataSource
将继续指向旧表。这是纯指针逻辑,同样的原理适用于所有.NET代码。这并不意味着你正在使用同一个变量。您可以创建
dt2
,并使用它,行为将是相同的。因此,是的,如果重新创建
数据表
,则需要重新分配
数据源
。但是,如果您更改原始的
dt
,即添加行,这些行将出现,因此您将不需要重新分配
数据源
。下面是一个代码示例,用于说明该方法:

Dim _dt As DataTable

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  _dt = New DataTable
  With _dt.Columns
    .Add("key")
    .Add("value")
  End With
  With ComboBox1
    .DisplayMember = "value"
    .ValueMember = "key"
    .DataSource = _dt
  End With
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  _dt.Rows.Add({"item_key", "item_value"})
End Sub

我懂了。我想我对源代码和表的工作方式有不同的想法。每次更改源及其工作状态时,我都会重新链接。谢谢