C#:使用一个数据表来填充2个不同的组合框?

时间:2010-05-16 10:53:32

标签: c# combobox datatable fill

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

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

我的意思是:combobox1 - > table1 combobox2 - >表2

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

我的问题是:在填充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),那么每件事都可以。

请提出任何建议。

谢谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

请参阅DataView Class