1

我在名为 combobox1 和 combobox2 的表单 (form1) 上有 2 个组合框。

每个组合框应填充存储在 Sql server 2005 中 2 个不同表中的数据:table1 和 table2

我的意思是:combobox1 --> table1 combobox2 --> table2

我用适当的数据填充数据表,然后将组合框分别绑定到它。

我的问题是:填充 2 个组合后,它们都具有从 table2 获取的相同数据。

这是我的代码:

        DataTable tb1 = new DataTable();

        //Filling tb1 with data got from table1
        combobox1.Items.Clear();
        combobox1.DataSource = tb1;
        combobox1.DisplayMember = "Name";
        combobox1.ValueMember = "ID";
        combobox1.SelectedIndex = -1;

        //filling tb1 with data got from table2
        combobox2.Items.Clear();
        combobox2.DataSource = tb1;
        combobox2.DisplayMember = "Name";
        combobox2.ValueMember = "ID";
        combobox2.SelectedIndex = -1;

怎么了?

似乎如果我得到 2 个不同的数据表(tb1 和 tb2),一切都会好起来的。

请有任何建议。

谢谢

4

2 回答 2

2

DataTable是引用类型,这意味着当您将 tb1 分配给控件的 DataSource 时,您实际上是在将内存中的引用/链接分配给DataSource. 因此,当您修改 tb1 变量时,您正在更改引用本身。因为您只是更改参考,所以DataSource看起来仍然相同DataTable,只是现在它有一组不同的数据。

于 2010-05-16T11:03:05.530 回答
1

在 DataTable() 上创建 2 个单独DataView的 's,并将每个组合框绑定到一个 DataView,。

请参阅DataView 类

于 2010-05-16T11:02:54.797 回答