none
Actualizar ASP:LABEL despues de seleccion DropDownList asp.net web form c# RRS feed

  • Pregunta

  • Estoy realizando un trabajo de la falcultad donde debo elegir un idioma de una lista desplegable dropdownlist.De acuerdo con el idioma seleccionado (español o ingles) hace una consulta a la base de datos y carga todas los IDs (NombreDelControl) con su valor (texto) en una lista.

     

       ```  Traducciones = IdiomaBLL.GetBLLServicioIdiomaUnico().TraduccionesSgl;```

    asi declaro las label: uso ClientIdMode para que permanezca estatica mi Id y no genere una automatica

         '''<asp:Label ID="IniciarSesion" ClientIDMode="Static"  runat="server"  ></asp:Label>'''

    Por otro lado tengo una funcion que recorre todos los controles y los carga en una Lista.

    ```  private void RecorrerControles(Control pObjetoContenedor)

            {

                foreach (Control Controlobj in pObjetoContenedor.Controls)

                {

                    ListaResultado.Add(Controlobj);

                    if ((Controlobj) is System.Web.UI.WebControls.DropDownList)

                    {

                        RecorrerDropDown(((System.Web.UI.WebControls.DropDownList)Controlobj));

                    }

                    if (Controlobj.Controls.Count > 0)

                    {

                        RecorrerControles(Controlobj);

                    }

                    ListaResultado.Add(Controlobj);

                }

            }

            private void RecorrerDropDown(System.Web.UI.WebControls.DropDownList pMenuStrip)

            {

                ListaResultado.Add(pMenuStrip);

                foreach (System.Web.UI.WebControls.ListItem item in pMenuStrip.Items)

                {

                    ListaResultado.Add(item);

                }

            }```

    Luego mapeo donde recorre por cada control (NombreDelControl) de la lista de control hasta que lo encuentra y machea con su valor (texto).

    ``` void IObservador.Traducirme()

            {

                ListaResultado.Clear();

                RecorrerControles(this);

                Traducciones = IdiomaBLL.GetBLLServicioIdiomaUnico().TraduccionesSgl;

                try

                {

                    foreach (Control Control in ListaResultado)

                    {

                        foreach (var traduccion in Traducciones)

                        {

                            if (Equals(Control.ID, traduccion.NombreDelControl))

                            {

                                string tipo;

                                tipo = Control.GetType().ToString();

                                //ESTO SON LOS <a>

                                if (Control is Label lbltradu)

                                {

                                    lbltradu.Text = traduccion.Texto;

                                    

                                }

                                //ESTOS SON LOS INPUT CON TYPE TEXT O PASSWORD

                                else if (Control is TextBox txttradu)

                                {

                                    txttradu.Text = traduccion.Texto;

                                }

                                //ESTOS SON LOS <BUTTON>

                                else if (Control is IButtonControl ibtntradu)

                                {

                                    ibtntradu.Text = traduccion.Texto;

                                }

                                //ESTOS SON LOS <INPUT> TYPE BUTTON O SUBMIT

                                else if (Control is LinkButton lbtntradu)

                                {

                                    lbtntradu.Text = traduccion.Texto;

                                }

                              

                            }

                        }

                    }

                }

                catch

                {

                }

            }```

    Sin embargo a pesar que trae la lista de traducciones correctamente , recorre todos los controles y trae sus id y luego aplica el mapeo , refresca la pantalla y persiste los texto en idioma español que es el que usa cuando se inicializa.

    Me saben decir si debo agregar algo en el web config? o que es lo que puedo estar haciendo mal? Desde ya gracias.

    lunes, 7 de diciembre de 2020 14:09

Respuestas