ComboBox

10/04/2008 - 16:34 por Paul | Informe spam
Hola,

Tengo una tabla que contiene apuntadores a otras tablas.
Quiero mostrar un registro de estas tablas en combos, pero que me
muestre los valores de las tablas padre,

Ejemplo:
T1(1, "uno")
T1(2, "dos")
T1(3, "tres")
T1(4, "cuatro")

T2(id, id1T1, id2T2)

T2(1,1,2)
T2(2,3,4)

Si muestro el registro 2 de la tabla T2, quisiera que en el combo1 me
mostrara el valor de 1 que es "uno" y en el combo2 el valor de 2 que
es "dos"

Es decir el datasource es de una table y el contenido del combo e de
otra.

Como puedo hacerlo?

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
10/04/2008 - 16:55 | Informe spam
"Paul" wrote in message
news:
Tengo una tabla que contiene apuntadores a otras tablas.
Quiero mostrar un registro de estas tablas en combos, pero que me
muestre los valores de las tablas padre,

Ejemplo:
T1(1, "uno")
T1(2, "dos")
T1(3, "tres")
T1(4, "cuatro")

T2(id, id1T1, id2T2)

T2(1,1,2)
T2(2,3,4)

Si muestro el registro 2 de la tabla T2, quisiera que en el combo1 me
mostrara el valor de 1 que es "uno" y en el combo2 el valor de 2 que
es "dos"

Es decir el datasource es de una table y el contenido del combo e de
otra.

Como puedo hacerlo?



Normalmente lo que se hace es enviar al servidor de base de datos un
"select" que sea un "join" de las dos tablas, de forma que recibes de vuelta
registros que tienen ya los dos datos. Entonces cargas en el combo el valor
y el texto sacando cada uno de su correspondiente columna, ya que ambas
vienen en cada registro recibido.

Select T2.id, T1.Texto from T2 Join T1 on T2.IdT1=T1.id
Respuesta Responder a este mensaje
#2 Alberto Poblacion
10/04/2008 - 16:55 | Informe spam
"Paul" wrote in message
news:
Tengo una tabla que contiene apuntadores a otras tablas.
Quiero mostrar un registro de estas tablas en combos, pero que me
muestre los valores de las tablas padre,

Ejemplo:
T1(1, "uno")
T1(2, "dos")
T1(3, "tres")
T1(4, "cuatro")

T2(id, id1T1, id2T2)

T2(1,1,2)
T2(2,3,4)

Si muestro el registro 2 de la tabla T2, quisiera que en el combo1 me
mostrara el valor de 1 que es "uno" y en el combo2 el valor de 2 que
es "dos"

Es decir el datasource es de una table y el contenido del combo e de
otra.

Como puedo hacerlo?



Normalmente lo que se hace es enviar al servidor de base de datos un
"select" que sea un "join" de las dos tablas, de forma que recibes de vuelta
registros que tienen ya los dos datos. Entonces cargas en el combo el valor
y el texto sacando cada uno de su correspondiente columna, ya que ambas
vienen en cada registro recibido.

Select T2.id, T1.Texto from T2 Join T1 on T2.IdT1=T1.id
Respuesta Responder a este mensaje
#3 Quim
11/04/2008 - 09:56 | Informe spam
Hola Paul.

Yo lo que hago en estos casos es lo siguiente:

Obtengo el/los registros de T2.
Obtengo los registros de T1.

Al combo le asigno como DataSource la tabla T1.
le asigno el DisplayMember de la T1 (Ej: Descrcipion) que quiero
mostrar.
le asigno el ValueMember del campo clave de T1 (Ej: idT1).
le asigno el SelectedValue del campo de la T2 (Ej: campodeT2conIdDeT1)
que contiene la clave que corresponde con la T1.

Debes tener en cuenta si es posible que el valor de campodeT2conIdDeT1 en T2
puede ser null.
Si este es el caso, desde código puedes añadir un registro al combo para
tenerlo controlado.

Des esta forma puedes editar el registro de T2.


Ejemplo (para xaml WPF) pero viene a ser lo mismo.
Aquí obtenemos el registro de tipos de IVA con Id = 1que está relacionado
con dos tablas más, clave de operacion y tipo de transacción.

private Llistes.Comuns.ClausOperacions llistaclausoperacions;
private Llistes.Comuns.TipusTransaccions llistatipustransaccions;
private Data.DataSqlTipIvaProvider tipiva;


/// <summary>
///
/// </summary>
private void IniTablas()
{
tipiva = this.tipiva.GetById(1);
llistaclausoperacions = new Llistes.Comuns.ClausOperacions();
llistatipustransaccions = new Llistes.Comuns.TipusTransaccions();
}

/// <summary>
/// Binds controls.
/// </summary>
private void BindControls()
{

// Combo para tipo de transacción, lo mismo para Clave de operación
this.TipTranCbo.ItemsSource = this.llistatipustransaccions;
this.TipTranCbo.DisplayMemberPath = "Descripcio";
this.TipTranCbo.SelectedValuePath = "Id";
BindingOperations.ClearBinding(this.TipTranCbo,
ComboBox.SelectedValueProperty);
this.TipTranCbo.SetBinding(ComboBox.SelectedValueProperty, "Tiptran");
}

Espero haberte servido de ayuda.

Saludos.
Joaquim

"Paul" escribió en el mensaje
news:
Hola,

Tengo una tabla que contiene apuntadores a otras tablas.
Quiero mostrar un registro de estas tablas en combos, pero que me
muestre los valores de las tablas padre,

Ejemplo:
T1(1, "uno")
T1(2, "dos")
T1(3, "tres")
T1(4, "cuatro")

T2(id, id1T1, id2T2)

T2(1,1,2)
T2(2,3,4)

Si muestro el registro 2 de la tabla T2, quisiera que en el combo1 me
mostrara el valor de 1 que es "uno" y en el combo2 el valor de 2 que
es "dos"

Es decir el datasource es de una table y el contenido del combo e de
otra.

Como puedo hacerlo?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida