【问题标题】:one table and two comboboxes一张桌子和两个组合框
【发布时间】:2011-06-23 17:43:38
【问题描述】:

我有:

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 中被选中。这是为什么呢?

我是否需要 cmbx2 的 dt 副本才能获得相同的值,但要独立选择?

【问题讨论】:

  • 您的信息确实很混乱,但我认为如果您将相同的集合分配给两个数据源,两个组合框将被同步。曾经用 WPF Datagrid 发生在我身上,所以也许值得一试。

标签: vb.net combobox datatable datasource


【解决方案1】:

这是因为它们引用了同一个对象。

使用dt.Copy()解决问题。

与此 DataTable 具有相同结构(表架构和约束)和数据的新 DataTable。 如果这些类已经派生,则副本也将是相同的派生类。 Copy 和 Clone 方法都创建一个与原始 DataTable 具有相同结构的新 DataTable。 Copy 方法创建的新 DataTable 与原始表具有相同的 DataRows 集,但 Clone 方法创建的新 DataTable 不包含任何 DataRows。

【讨论】:

  • 是的,但我认为 dt.Copy() 更合适
  • 确实如此。用 MSDN 编辑了我的帖子,解释了为什么要使用 Copy 而不是 Clone。
  • 欢迎您。如果它适合你,只需标记答案。可以帮助其他人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 2012-05-23
  • 1970-01-01
相关资源
最近更新 更多