gpt4 book ai didi

c# - 组合框出于某种原因被链接

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:38 26 4
gpt4 key购买 nike

我有以下代码来填充 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 文档级项目。

最佳答案

新的大大改进的解决方案:

DataSource 不仅仅是数据。

有隐藏的默认 BindingSource 使 ComboBoxes 跟随。

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

现在 ComboBoxes 可以单独更改。

注意:我的第一个版本有效,但是错误的方法。对不起..!

关于c# - 组合框出于某种原因被链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com