Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2010, 13:47
Avatar de huesos52
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