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

Problemas con un DropDownList!!!

Estas en el tema de Problemas con un DropDownList!!! en el foro de .NET en Foros del Web. Hola a todos! En mi formulario web utilizo un control DropDownList que relleno dinámicamente con los datos obtenidos de una bd. Mi problema es que ...
  #1 (permalink)  
Antiguo 20/06/2005, 10:08
 
Fecha de Ingreso: febrero-2005
Mensajes: 11
Antigüedad: 19 años, 3 meses
Puntos: 0
Exclamación Problemas con un DropDownList!!!

Hola a todos! En mi formulario web utilizo un control DropDownList que relleno dinámicamente con los datos obtenidos de una bd. Mi problema es que al pulsar el botón de envío del formulario se pierde el estado del DropDownList y pierdo la capacidad de saber que elemento de la lista ha seleccionado el usuario.

Os agradecería muchisimo que me echaseis una mano para saber lo que está pasando y como puedo solucionar este problema.

Muchísimas gracias a todos!
  #2 (permalink)  
Antiguo 20/06/2005, 10:12
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Sin el codigo es dificil saber lo que te pasa.
  #3 (permalink)  
Antiguo 20/06/2005, 11:15
 
Fecha de Ingreso: febrero-2005
Mensajes: 11
Antigüedad: 19 años, 3 meses
Puntos: 0
Aqui va el código, a ver si me podeis echar una mano!

protected System.Web.UI.WebControls.DropDownList listaAsignaturas;

// En el Page_Load

private void Page_Load(object sender, System.EventArgs e)
{
etiquetaError.Visible=false;
PuestoLabel.Visible=false;
PuestoTextBox.Visible=false;
ProfesionLabel.Visible=false;
ProfesionTextBox.Visible=false;
UniversidadLabel.Visible=false;
UniversidadTextBox.Visible=false;


// Introducir aquí el código de usuario para inicializar la página
if (!IsPostBack)
{
//Se inicializa la variable del servicio web
InstanciaDocencia = new Docencia.SW_Docencia();
InstanciaCuentas = new Cuentas.SW_Cuentas();

//Recuperar parametros del formulario anterior
sp = (IOusalCliente.Web.Modulos.Usuarios.SeleccionarPer fil)Context.Handler;
string rol = sp.pasarSeleccion;
Page.Session["variable_vRol"] = rol;

switch(RolUsu)
{
//Hay mas case, este es el que nos interesa
case ROL_ALUMNO: /*Alumno*/
//Se obtiene el listado de las asignaturas disponibles en el sistema
listaAsignaturas = new
System.Web.UI.WebControls.DropDownList();


//Se utiliza el método RecuperarDatosParaInterfaz del Servicio
// Web
ArrayList todasAsig = new
ArrayList(servWeb_Docencia.RecuperarDatosParaInter faz("listaAsignaturas"));
// Se enlaza elnombre de las asignaturas con el control
//DropDownList;
// Se deja el primero en blanco
listaAsignaturas.Items.Add(new ListItem("--- Selecciona
Asignatura ---"));
listaAsignaturas.Items[0].Value="0";
//En el arrayList van los datos del nombre de la asignatura y el codigo de asignatura
int j=1;
for (int i=0;i<todasAsig.Count;i++)
{
listaAsignaturas.Items.Add(new
ListItem(todasAsig[i].ToString()));
listaAsignaturas.Items[j].Value=todasAsig[i+1].ToString();
i++;
j++;
}
listaAsignaturas.CssClass="PosicionListaAsig";
PanelDatos.Controls.Add(listaAsignaturas);
break;

}
else
{
servWeb_Docencia = InstanciaDocencia;
servWeb_Cuentas = InstanciaCuentas;

}
}

//Cuando se pulsa el botón de envío se ejecuta el siguiente código
private void bRegistrar_Click(object sender, System.EventArgs e)
{
//Comprobaciones de error de los diferentes textbox rellenados por el
//usuario
switch(RolUsu)
{
case ROL_ALUMNO: /* Alumno*/
//En este momento listaAsignaturas es null
if(listaAsignaturas.SelectedItem.Value=="0")
{
etiquetaError.Text="Debes rellenar todos los campos
listaAsignaturas";
etiquetaError.Visible=true;
error=true;
}
break;
}



Espero que con este fragmento de código si que podais ayudarme.
Saludos.
  #4 (permalink)  
Antiguo 20/06/2005, 11:32
Avatar de shadow_woman  
Fecha de Ingreso: junio-2004
Ubicación: La Isla De Los Muertos
Mensajes: 60
Antigüedad: 19 años, 10 meses
Puntos: 0
Pruebalo asi

Buenas, veras, yo intentaría poner el Add de esta manera, a mi me funciona:


// Dentro del bucle :
........
// creo dos variables nuevas para que sea mas entendible:
Dim asignatura, valor_asignatura As String
// Ahora le doy el valor
asignatura = todasAsig[i].ToString();
valor_asignatura = todasAsig[i+1].ToString();

//Ahora las meto en el DropDownList

listaAsignaturas.Items.Add(new ListItem(asignatura, valor_asignatura));

......
// Fin del bucle


Asi no necesitas un índice j.

Entonces al seleccionar puedes escoger el valor del item seleccionado
valor_item_seleccionado = listaAsignaturas.SelectedValue


Espero haberte ayudado
  #5 (permalink)  
Antiguo 20/06/2005, 11:37
 
Fecha de Ingreso: septiembre-2004
Mensajes: 217
Antigüedad: 19 años, 7 meses
Puntos: 0
Seguramente tienes el autopostback en true.

Me parece que el problema puede estar en como construyes el objeto
listaAsignaturas = new
System.Web.UI.WebControls.DropDownList();

Lo estas generando de forma dinamica, por lo tanto debes construirlo siempre en el load de la pagina ya que cuando se proboca un evento y regresa a esta pagina para que pueda mantener el estado debe existir el objeto.

espero te pueda servir ....
  #6 (permalink)  
Antiguo 22/06/2005, 00:54
 
Fecha de Ingreso: febrero-2005
Mensajes: 11
Antigüedad: 19 años, 3 meses
Puntos: 0
Gracias a todos! Ya lo he solucionado. el problema era que tenia que volver a inicializar el dropdownlist tambien cuando la pagina no se cargaba por primera vez.
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 17:48.