Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/01/2007, 13:55
Avatar de zacktagnan
zacktagnan
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 8 meses
Puntos: 3
Valor inicial indicativo en un menú desplegable

Hola a tod@s:

En mis principios con el ASP.NET en C#, ya tengo una cuestión a plantear.

Vamos a ver. Se tiene un menú desplegable en una página que se va a rellenar con los datos de una tabla [GÉNEROS] de una base de datos en SQL Server.

Hasta aquí no hay problema, haciéndolo con el Visual Studio, en la vista diseño, se saca un control de DropDownList. Y luego en la parte de código, dentro del Page_Load, se hace la conexion y se establece la consulta SQL para sacar luego los datos deseados. Y se indica que los datos salgan por el menú desplegable.
También, por el panel de propiedades del DropDownList, se indica que como texto se saca el nombre del género y como valor el id de dicho género.

Este sería un ejemplo de código de lo comentado hasta ahora:
Código:
...
	protected System.Web.UI.WebControls.DropDownList menu_generos;

	private void Page_Load(object sender, System.EventArgs e)
	{
		// Introducir aquí el código de usuario para inicializar la página
		if (!Page.IsPostBack)
		{
			SqlConnection laConex = new SqlConnection("server=sp2400-102;database=db_videoclub;uid=sa");
			SqlDataAdapter elAdap = new SqlDataAdapter("SELECT gen_id, gen_nom FROM GENEROS ORDER BY gen_nom", laConex);
			DataSet elDs = new DataSet();

			try
			{
				laConex.Open();
				elAdap.Fill(elDs, "nombres_generos");
				menu_generos.DataSource = elDs.Tables["nombres_generos"].DefaultView;
				menu_generos.DataBind();
				laConex.Close();
			}
			catch(SqlException laEx)
			{
				Response.Write(laEx.Message);
			}
		}
	}
...

Código:
/* POR EL PANEL DE PROPIEDADES DEL DropDownList menu_generos */

DataTextField	>>  gen_nom
DataValueField	>>  gen_id

Hasta aquí, todo va bien en principio. La página muestra la lista de géneros que están registrados en su tabla, estando visible como primer elemento el primer género de dicha tabla.

Bueno pues ahora va la pregunta.
Si se quiere que el primer elemento de este menú no sea el primer registro resultante de la consulta efectuada, sino el típico elemento cuyo texto es [Seleccionar un género] ó simplemente una casilla en blanco, ¿cómo se programa esto para que salga dicho elemento?
Yo tengo más experiencia en ASP y en este antes de realizar el bucle que sacaba los datos de la consulta se puede insertar una primera etiqueta <option> Seleccionar género </option> con el texto y el valor deseados.

Pero en ASP.NET este menú no tiene la misma cosntrucción.
Código:
<asp:DropDownList id="menu_generos" style="Z-INDEX: 103; LEFT: 347px; POSITION: absolute; TOP: 98px" runat="server" DataTextField="gen_nom" DataValueField="gen_id"></asp:DropDownList>
Luego, ¿cómo puedo conseguir lo deseado?

Me han sugerido que como primer registro de la tabla, tuviera un elemento con ese texto [ Seleccionar género ] así ya tendría esa opción. Pero no me convence esta solución pues si pongo en la consulta el ORDER BY este elemento ya no saldría el primero.

Así que ¿alguna otra forma?

Espero se haya comprendido lo que quiero...
__________________
Saludos,

zacktagnan.
=================================================