Vb.net 将数据表分配给组合框,然后进行更改
VB2010我已经手动创建了一个DataTable,所以它不是来自数据库。我已将其分配给一个组合框,它将显示我的数据列。如果我更改数据表,我是否必须重新建立链接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 =
'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
我懂了。我想我对源代码和表的工作方式有不同的想法。每次更改源及其工作状态时,我都会重新链接。谢谢