gpt4 book ai didi

vb.net - 将 DataTable 分配给 ComboBox,然后进行更改

转载 作者:行者123 更新时间:2023-12-01 09:32:48 24 4
gpt4 key购买 nike

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

如果我不重新建立链接,我似乎会得到相同的项目。我虽然因为 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

关于vb.net - 将 DataTable 分配给 ComboBox,然后进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com