我有:
Dim ds As DataSet = New DataSet
Dim dt As DataTable = New DataTable
adapter.Fill(ds, "Table")
dt = ds.Tables("Table")
cmbx1.DataSource = dt
cmbx1.DisplayMember = "field1"
cmbx1.ValueMember = "field2"
cmbx2.DataSource = dt
cmbx2.DisplayMember = "field1"
cmbx2.ValueMember = "field2"
所以,当我从cmbx1中选择一些东西时,它也会在cmbx2中被选中。这是为什么?
我是否需要ctx2的dt副本才能获得相同的值,但是可以单独选择吗?
答案 0 :(得分:4)
这是因为他们引用了同一个对象。
使用dt.Copy()
解决问题。
具有与此DataTable相同结构(表模式和约束)和数据的新DataTable。 如果已派生这些类,则副本也将具有相同的派生类。 Copy和Clone方法都创建了一个与原始DataTable结构相同的新DataTable。由Copy方法创建的新DataTable与原始表具有相同的DataRows集,但Clone方法创建的新DataTable不包含任何DataRows。