组合框由于某种原因被链接

2024-05-13

我有以下代码来填充 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 个,那么一切正常。

该项目是使用 VS2013 使用 .NET-4.0 创建的 Word 2010 的 Word 文档级项目。


新的改进的解决方案:

A DataSource不仅仅是数据。

有隐藏的默认值BindingSource这使得组合框跟随。

为了避免这种耦合以及这个答案的第一个版本中的数据复制,您需要做的就是创建一个单独的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 ;
..
..

现在组合框可以独立更改。

Note:我的第一个版本有效,但是wrong怎么办。对不起..!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组合框由于某种原因被链接 的相关文章

随机推荐