由于某种原因,组合框是连接在一起的
本文关键字:连接 在一起 组合 由于某种原因 | 更新日期: 2023-09-27 18:05:15
我有以下代码来填充3个组合框:
private void PopulateDDLs()
{
SqlConnection connection;
SqlCommand command;
SqlDataReader reader;
DataTable dt;
using (connection = new SqlConnection("connection string here"))
{
using (command = new SqlCommand("sql query here", connection))
{
connection.Open();
using (reader = command.ExecuteReader())
{
dt = new DataTable();
dt.Load(reader);
ddl1.ValueMember = "col1";
ddl1.DisplayMember = "col2";
ddl1.DataSource = dt;
ddl2.ValueMember = "col1";
ddl2.DisplayMember = "col2";
ddl2.DataSource = dt;
ddl3.ValueMember = "col1";
ddl3.DisplayMember = "col2";
ddl3.DataSource = dt;
}
connection.Close();
}
}
}
但是,当我执行这个程序并从其中一个组合框中进行选择时,会自动从其他组合框中选择相同的值。知道为什么会发生这种情况吗?更重要的是,如何阻止这种情况发生?
如果我创建3个函数,每个组合框1个,那么一切都很好。
这个项目是一个Word 2010的Word文档级项目,使用。net -4.0和VS2013创建。
新的改进方案:
A DataSource
不仅仅是数据。
有一个隐藏的默认BindingSource
,使组合框跟随。
为了避免这种耦合以及这个答案的第一个版本中的数据复制,您所需要做的就是为每个ComboBox创建一个单独的BindingSource
。它们共享DataTable
,但每个都有自己的rowPointer:
BindingSource bS1, bS2, bS3;
..
..
..
..
dt = new DataTable();
dt.Load(reader);
bS1 = new BindingSource();
bS1.DataSource = dt;
bS2 = new BindingSource();
bS2.DataSource = dt;
bS3 = new BindingSource();
bS3.DataSource = dt;
..
ddl1.DataSource = bS1 ;
ddl2.DataSource = bS2 ;
ddl3.DataSource = bS3 ;
..
..
现在组合框可以独立更改
注意:我的第一个版本可以工作,但是是错误的方法。对不起. . !