Foros del Web » Programando para Internet » ASPX (.net) »

Dropdownlists mas estables.

Estas en el tema de Dropdownlists mas estables. en el foro de ASPX (.net) en Foros del Web. Buen día foro. Tengo 3 dropdownlist dependientes de datos disponibles en la base de datos. Con este codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ASP: Ver original protected ...
  #1 (permalink)  
Antiguo 29/10/2010, 13:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Dropdownlists mas estables.

Buen día foro.

Tengo 3 dropdownlist dependientes de datos disponibles en la base de datos.

Con este codigo:

Código ASP:
Ver original
  1. protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.        objeto_control_datos.control_acceso_directo();            
  4.         /**
  5.          * Se recupera en la variable cod_usuario el codigo del usuario seleccionado.
  6.          * se realiza la consulta de todos los campos de la tabla y se cargan los datos correspondientes.
  7.          * en label_usuario se pone el codigo del usuario para evitar llamar nuevamente a la base de datos
  8.            al momento de actualizar la pagina.
  9.          * se acomoda la fecha utilizada de la base de datos en el formato yyyy-MM-dd.
  10.          * */
  11.         if (!IsPostBack)
  12.         {
  13.             objeto_control_datos.conectar_BD();
  14.             consultas.Clear();
  15.             consultas = objeto_control_datos.adaptar_datos("SELECT cod_usuario FROM usuarios WHERE log_usuario ='" + Session["login"].ToString() + "' OR mai_usuario ='" + Session["login"].ToString() + "'", consultas);
  16.             string prueba = Session["login"].ToString();
  17.            
  18.             int cod_usu = int.Parse(consultas.Rows[0]["cod_usuario"].ToString());
  19.             consultas.Clear();
  20.             consultas = objeto_control_datos.adaptar_datos("SELECT e.cod_especie, nom_especie FROM especies e INNER JOIN permisos p ON e.cod_especie = p.cod_especie WHERE p.cod_usuario="+cod_usu+" ORDER BY nom_especie", consultas);
  21.             if (consultas.Rows.Count != 0)
  22.             {
  23.  
  24.                 /**
  25.                 * Carga de Informacion de usuarios en combo_usuarios
  26.                 1. Carga de usuarios disponibles. primero se adiciona la opcion seleccionar
  27.                    con listitem y la propiedad AppendDataBoundsItems en true.
  28.                 2. Terminar la conexion
  29.                 * */
  30.  
  31.                 // 1.
  32.                 ListItem reg = new ListItem("Seleccionar", "0");
  33.                 combo_especie.Items.Add(reg);
  34.                 combo_especie.AppendDataBoundItems = true;
  35.                 combo_especie.DataSource = consultas;
  36.                 combo_especie.DataValueField = "cod_especie";
  37.                 combo_especie.DataTextField = "nom_especie";
  38.                 combo_especie.DataBind();
  39.             }
  40.             consultas.Clear();
  41.             consultas = objeto_control_datos.adaptar_datos("SELECT cod_departamento, nom_departamento FROM departamento ORDER BY nom_departamento", consultas);
  42.             if (consultas.Rows.Count != 0)
  43.             {
  44.  
  45.                 /**
  46.                 * Carga de Informacion de usuarios en combo_usuarios
  47.                 1. Carga de usuarios disponibles. primero se adiciona la opcion seleccionar
  48.                    con listitem y la propiedad AppendDataBoundsItems en true.
  49.                 2. Terminar la conexion
  50.                 * */
  51.  
  52.                 // 1.
  53.                 ListItem reg = new ListItem("Seleccionar", "0");
  54.                 combo_departamento.Items.Add(reg);
  55.                 combo_departamento.AppendDataBoundItems = true;
  56.                 combo_departamento.DataSource = consultas;
  57.                 combo_departamento.DataValueField = "cod_departamento";
  58.                 combo_departamento.DataTextField = "nom_departamento";
  59.                 combo_departamento.DataBind();
  60.             }
  61.             else
  62.             {
  63.                 label_clima.Visible = true;
  64.                 label_clima.Text = "No es posible cargar los departamentos. Consulte el Administrador del sistema";
  65.                 label_clima.ForeColor = System.Drawing.ColorTranslator.FromHtml("#993300"); //rojo
  66.             }
  67.  
  68.  
  69.             // 2.
  70.             objeto_control_datos.desconectar_BD();            
  71.         }
  72.        
  73.     }

Al seleccionar un departamento, se me despliegan los municipios de ese departamento. Al desplegar un municipio (En el onchange de municipio), se me despliega en otro dropdownlist las estaciones que tiene ese municipio.

Todo esto lo hago con ajax y me funciona de maravilla.

Sin embargo, cuando hago una selección y me dirijo a otra pagina posterior, cuando le doy en el navegador el botón atrás, estos combos quedan totalmente desorientados. Si escojo otro departamento me habilita los municipios del departamento seleccionado, pero vuelve y me pone el nombre en caché del departamento.

La verdad no se me ocurre como solucionarlo.

Agradecería una ayuda.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #2 (permalink)  
Antiguo 29/10/2010, 14:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Dropdownlists mas estables.

Leyendo un poco, pude identificar que esto se da por hacer uso de ajax.

Al hacer click en los botones atras o adelante, el solo me toma como referencia la pagina que se pulsó la primera vez. Como el resto de selecciones no hicieron una recarga a la pagina no pone bien los cambios hechos.

Restructuro mi pregunta... Que puedo hacer para que al hacer click en atras, me tome todos los eventos seleccionados?
Conocen alguna forma?

Intenté habilitar en el scriptmanager la opción enablehistory pero sigue igual.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: mas, aspx
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 13:27.