VB2010 我手动创建了一个数据表,因此它不是来自数据库。我已将其分配给组合框,它显示我的数据列。如果我更改数据表,是否必须重新建立链接?
'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
并使用它,行为会是相同的。所以是的,如果你重新创建DataTable
,你需要重新分配DataSource
再次。但是如果你改变原来的dt
,即添加行,这些行将会出现,因此您不需要重新分配DataSource
。这是一个代码示例,用于说明该方法:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)