c# - primarios - Comboboxes están vinculados por alguna razón
ensamblados de interoperabilidad primarios (1)
Tengo el siguiente código para llenar 3 cuadros combinados:
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();
}
}
}
Sin embargo, cuando ejecuto este programa y selecciono uno de los cuadros combinados, el mismo valor se selecciona automáticamente de los otros cuadros combinados. ¿Alguna idea de por qué está sucediendo esto y cómo evitar que suceda más importante?
Si creo 3 funciones, 1 para cada cuadro combinado, todo funciona bien.
Este proyecto es un proyecto de Word Document level para Word 2010 creado utilizando .NET-4.0 utilizando VS2013.
Nueva solución mucho mejor:
Parece que hay un BindingSource predeterminado oculto que hace que los ComboBoxes sigan.
Para evitar este acoplamiento y también la replicación de datos en la primera versión de esta respuesta, todo lo que necesita hacer es crear un BindingSource
por separado para cada ComboBox. Estos comparten el DataTable
pero tienen cada uno su 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 ;
..
..
Ahora los ComboBoxes se pueden cambiar de forma independiente.
Nota : Mi primera versión funcionó pero fue la forma incorrecta de hacerlo. Lo siento..!