我在一个名为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),那么每件事都可以。
请提出任何建议。
谢谢
答案 0 :(得分:2)
DataTable
是一种引用类型,这意味着当您将tb1分配给控件的DataSource时,实际上是将内存中的引用/链接分配给DataSource
。因此,当您修改tb1变量时,您正在更改引用本身。由于您只是更改引用,DataSource
仍然会查看相同的DataTable
,现在它只有一组不同的数据。
答案 1 :(得分:1)
在DataTable()上创建2个单独的DataView
,并将每个组合框绑定到DataView,。