Algo huele mal en el código que enviaste. Primero se crea un DataSet,
this.dsVendedores = new DataSet();
e inmediatamente se lo sobreescribe con un llamado al método Llenar()
this.dsVendedores = this.vendedores.Llenar();
Idem para la otra clase.
this.dsMovimientos = new DataSet();
this.dsMovimientos =
this.movimientos.Llenar(Convert.ToInt32(this.vendedor.SelectedValue));
El resultado es que el DataSet usado como data source del ComboBox
es el
devuelto por la clase Vendedores, y si bien esto en sí no tiene nada de
malo, sospecho que no es lo que te proponías. Si tu intención es que el
método Llenar() cargue el DataSet creado previamente entonces deberías
modificar dicho método para tomar el DataSet como parámetro. Esto
también
sería más consistente, por lo menos en lo que respecta a nombres de
método,
con el patrón usado en los TableAdapters de NET 2.0, donde se pueden
generar
métodos que devuelven un objeto nuevo cuyo nombre por default comienza
con
Get...(), como también métodos que operan sobre un objeto recibido como
parámetro y que por default comienzan con Fill...(), o en tu caso
Llenar().
Habría que ver el código de las clases Vendedores y Movimientos para
decir
donde está el problema, pero sospecho que deben compartir una misma
instancia de DataSet.
Saludos,
Fernando Tubio
----- Original Message ----- From: "Gustavo" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, March 30, 2007 7:21 PM
Subject: [puntonet] Comportamiento extraño de DataSet o ComboBox
Buenas Tardes, a ver si me pueden ayudar, si a alguien le sucedio algo
parecido, me sucede algo extraño:
Cree una serie de clases para la manipulacion de datos de las
tablas de
la
aplicacion.
Una de ellas la uso para traer de la base de datos los vendedores
en un
dataset que uso de transporte y luego llenar un ComboBox de la
siguiente
manera:
this.vendedores = new Vendedores();
this.dsVendedores = new DataSet();
this.dsVendedores = this.vendedores.Llenar();
this.vendedor.DisplayMember = "NOMBRE";
this.vendedor.ValueMember = "ID";
this.vendedor.DataSource = this.dsVendedores.Tables[0].DefaultView;
Hasta aca todo bien, se llena el combo correctamente teniendo el campo
ID
como value y el Nombre en Display.
Pero Cuando Creo otro objeto de otra clase similar pero para otra
entidad,
al llamar al metodo this.movimientos.Llenar me rompe el combobox de
vendedores, mantiene su cantidad de registros, pero dice
System.DataRow,
como si se perdieran sus datos.....
this.movimientos = new Movimientos(); this.dsMovimientos
= new
DataSet();
this.dsMovimientos =
this.movimientos.Llenar(Convert.ToInt32(this.vendedor.SelectedValue));
<<<< Rompe
No entiendo que es lo que sucede ya que son dos objetos diferentes.
los
datasets no tienen relacion alguna y no son referenciados.
A su vez, la clase Movimientos y Vendedores usan otra clase, que se
usa
de
coneccion a la base de datos, quizas venga por ahi, pero no encuentro
nada.
Espero que se entienda el problema, Me podran dar alguna ayuda?
Saludos
Gustavo