Foros del Web » Programación para mayores de 30 ;) » .NET »

Seleccionar un elemento de un control según campo de la base de datos

Estas en el tema de Seleccionar un elemento de un control según campo de la base de datos en el foro de .NET en Foros del Web. Hola a tod@s: Tengo un formulario en .NET C# que me sirve para insertar los datos de una película en la respectiva tabla de la ...
  #1 (permalink)  
Antiguo 26/02/2007, 14:33
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Seleccionar un elemento de un control según campo de la base de datos

Hola a tod@s:

Tengo un formulario en .NET C# que me sirve para insertar los datos de una película en la respectiva tabla de la base de datos.

El formulario consta de diveras cajas de texto para insertar datos comunes como el título de la película, el año, ... Y unos dropdownlist, listbox y radiobuttonlist para elegir ciertos valores según la lista determinada.

Por ejemplo, hay una lista que se carga con los valores sacados de otra tabla GENEROS, para escoger todos a los que vaya a pertenecer la nueva película.
En otro DropDownList, cuyos valores vienen también de una tabla de DISTRIBUIDORES, se elige el distribuidor de la película.
En un segundo DropDownList, se escoge la clasificación de la película ("Todos los públicos", "Para mayores de 18",...) Los valores de este dropdownlist se cargan desde el PageLoad con:
...
peli_calif.Items.Insert(1, "Todos los públicos");
...
Luego hay un RadioButtonList, con dos opciones, para escoger si la peli es en Color ó B/N.

Más ó menos estos son los elementos.

A la hora de capturar los valores de todos estos controles para realizar el INSERT, no tengo problema.

La cuestión está a la hora de sacarlos en lo que puede ser la ficha de la película.

Es decir, tras hacer el SQL para recoger los datos de la película, al sacarlos por pantalla:

¿Cómo hacer lo que sigue?

- Si la película tiene en su campo correspondiente el dato "Todos los públicos", que en el DropDownList correspondiente quede seleccionado el elemento con este texto.
- Si la película es en B/N, que en el RadioButtonList quede seleccionada esta opción.
- Que en el DropDownList de los DISTRIBUIDORES quede seleccionado el de la película.
- Que en la lista de Generos, aparezcan seleccionado todos a los que pertenezca la película.


Espero que alguien me dar al menos una idea de como realizar todos estos pasos.
__________________
Saludos,

zacktagnan.
=================================================
  #2 (permalink)  
Antiguo 27/02/2007, 07:27
Avatar de .seb  
Fecha de Ingreso: marzo-2006
Ubicación: Uruguay
Mensajes: 493
Antigüedad: 18 años, 1 mes
Puntos: 1
Re: Seleccionar un elemento de un control según campo de la base de datos

Calculo que estarás buscando algo mas rebuscado o no logro entender tu pregunta. Pero por las dudas ahí va...
La unica forma de hacer eso es con ifs y loops.

Si pelicula.Genero == "accion"
comboGenero.SelectedText = "accion"

Si pelicula.Color
radioColor.Checked = true

en fin... no se si es lo que estás buscando
__________________
saludos
seba
http://sgomez.blogspot.com
  #3 (permalink)  
Antiguo 27/02/2007, 16:21
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Seleccionar un elemento de un control según campo de la base de datos

Buenas:

De primeras, por si acaso, decir que estoy programando en C#.

A ver .seb...
Cita:
Si pelicula.Genero == "accion"
comboGenero.SelectedText = "accion"
A mi esa propiedad ó método (todavía no me aclaro cuando es una cosa u otra) para el ListBox ó el DropDownList no me sale...

Cita:
Calculo que estarás buscando algo mas rebuscado o no logro entender tu pregunta.
Intentaré explicar de nuevo la situación planteada que ya casi he solucionado.

En la base de datos, tengo entre otras tablas las que siguen:
PELICULAS, GENEROS, DETALLES_GENERO, DISTRIBUIDORES

PELICULAS esta relacionada con DISTRIBUIDORES por el código del distribuidor
La película podrá tener uno ó varios géneros, por eso está la tabla de DETALLES_GENERO en la que se ingresa un registro relacionado con el código de película por cada género elegido en el insert de la misma.
DETALLES_GENERO está relacionada también, por supuesto, con GENEROS por el código de ésta última.

[DISTRIBUIDORES]<---[PELICULAS]--->[DETALLES_GENERO]--->[GENERO]

Más ó menos, esa es la estructura.

En la ficha de película en la web, en el formulario, existen diversas cajas para meter datos como el título, actores,...
Y luego hay:

- un RadiobuttonList con dos opciones Color (con valor interno de 1) y B/N (con valor interno de 0)
- un DropDownList de Clasificación (Todos los públicos, Mayores de 18, ...)
- un DropDownList de Distribuidores (que se carga a través de una consulta sobre tabla DISTRIBUIDORES >> DataValueField="distr_id" DataTextField="distr_empresa")
- un ListBox de Géneros (que se carga a través de una consulta sobre la tabla GENEROS >> DataValueField="gen_id" DataTextField="gen_nom"). Es un ListBox con selección múltiple para como he explicado puede elegirse más de uno si es el caso.

Pues eso, a la página de la ficha le llega el ID de la película (peli_id) que servirá para sacar los datos de la película a través de la consulta correspondiente.
Hago otra SQL para obtener la lista de distribuidores y otra para obtener los géneros.

La lista referente a la Clasificación no viene de ninguna consulta sino que la cosntruyo a pelo, manualmente, en el PageLoad

La cosa es que si la película demandada es la que tiene el código, por ejemplo, 'p0000034' con el código de distribuidor 4, en la lista correspondiente quede seleccionado el nombre de ese distribuidor al cargarse la página.

Lo mismo para los otros casos:
- en el campo de ColorBN de la tabla PELICULAS se inserta 1 si es a Color y 0 si es a B/N, entonces al cargar la lista deberá quedar chequeada la opción específica según el caso.
- para la lista de géneros, igual, deberán quedar seleccionados los elementos que se refieran a los géneros de la película mostrada, que vendrás dados por los detalles de género.
- el campo de clasificación en la tabla es de tipo nvarchar y guarda el nivel según que peli sea (Todos los públicos, Mayores de ...). Entonces si por ejemplo la peli es para "Todos los públicos" en la lista deberá que dar seleccionado este elemento con el mismo texto.

Decir que uso un DataReader para sacar los datos

He llegado a solucionar todos los casos menos el de la clasificación.

Para lo del RadioButtonList (peli_colbn) de Color - B/N:
Código:
bool vpeli_colbn = bool.Parse((dr_laPeliMod["peli_colbn"]).ToString());
if (vpeli_colbn == true)//SI COLOR
{
	peli_colbn.Items[0].Selected = true;//OPCIÓN COLOR
}
else
{
	peli_colbn.Items[1].Selected = true;//OPCIÓN B/N
}

Para lo del DropDownList (peli_distrib) de Distribuidores:
Código:
string vpeli_distrib = (dr_laPeliMod["peli_distrib"]).ToString();
for (int i_dis=0; i_dis<peli_distrib.Items.Count; i_dis++) 
{
	if (peli_distrib.Items[i_dis].Value == vpeli_distrib) 
	{
		peli_distrib.Items[i_dis].Selected = true;
	}
}

Para lo del ListBox (peli_distrib) de Géneros:
Código:
bool existe_laPeliMod;
while(existe_laPeliMod)
{
	vgen_nom = (dr_laPeliMod["gen_nom"]).ToString();
	for (int i_gen=0; i_gen<list_generos.Items.Count; i_gen++) 
	{
		if (list_generos.Items[i_gen].Text == vgen_nom) 
		{
			list_generos.Items[i_gen].Selected = true;
		}
	}
	existe_laPeliMod = dr_laPeliMod.Read();
}

Y me falta que quede seleccionado el elemento del DropDownList de Claificación.

Como he dicho, éste no se rellena a través de ninguna consulta a una tabla sino que lo construyo yo en el PageLoad de esta manera:
Código:
//CARGA DEL MENÚ DE [ Calificación ]
peli_calif.Items.Insert(0, "----------* Seleccionar una *----------");
peli_calif.Items.Insert(1, "Todos los públicos");
peli_calif.Items.Insert(2, "Recomendada para menores de 3");
peli_calif.Items.Insert(3, "Recomendada para mayores de 7");
peli_calif.Items.Insert(4, "Recomendada para mayores de 12");
peli_calif.Items.Insert(5, "Recomendada para mayores de 16");
peli_calif.Items.Insert(6, "Recomendada para mayores de 18");

He intentado a usar lo mismo empleado para que quede elegido el distribuidor.

Siendo [peli_calif] el nombre del control:

Código:
string vpeli_calif = (dr_laPeliMod["peli_calif"]).ToString();
for (int i_calif=0; i_calif<peli_calif.Items.Count; i_calif++) 
{
	if (peli_calif.Items[i_calif].Text == vpeli_calif) 
	{
		peli_calif.Items[i_calif].Selected = true;
	}
}
Pero, aunque no da error tampoco, selecciona lo deseado.

Pues eso, si alguien sabe como solucionar este último caso que es el que me queda, espero su respuesta muy agradecido.

Espero haberte aclarado algo más .sb (a no ser que te hayas enrollado más aún).
__________________
Saludos,

zacktagnan.
=================================================
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:52.