sin*_*zzy 3 vb.net datatable combobox datasource
VB2010我手动创建了一个DataTable,因此它不是来自数据库.我已将其分配给组合框并显示我的数据列.如果我更改了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
Run Code Online (Sandbox Code Playgroud)
似乎我不重新建立链接我得到相同的项目.我虽然因为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
Run Code Online (Sandbox Code Playgroud)