none
Como cambio de clase a un control y asignarle otra clase? RRS feed

  • Pregunta

  • Hola.

    Estoy intentando hacer un cambio de clases a mi control label pero no hace nada.

    Uso este Script:

            function removeClass() {
                var lblFecha = document.getElementById("lblFecha");
                lblFecha.className = "list-group-item list-group-item-danger"
               
            }

    Y mando a llamar ese script en code behind a través de esta línea:

    ScriptManager.RegisterStartupScript(this, this.GetType(), "AlarmaFechaHora", "removeClass();", true);

    Pero no funciona. Tengo que aclarar que ese control está dentro de un control ListView y el ListView está dentro de un UpdatePanel.

    Lo que requiero es poder cambiar el fondo a rojo de la fecha a un danger de bootstrap, cambiar de "list-group-item list-group-item-action" a "list-group-item list-group-item-danger".

    Gracias por sus comentarios amigos

    viernes, 16 de febrero de 2018 17:10

Respuestas

  • Si el label está dentro de un ListBox, el ID no es el mismo que le pusiste en el código fuente, sino que se genera dinámicamente concatenando varias partes, incluyendo un número que se incrementa por cada repetición del label dentro del ListBox. Si haces un "ver fuente" (o usa la F12) en el navegador, podrás ver el ID que tiene el label, y verás que no es simplemente "lblFecha" sino algo más complicado. Por eso no te funciona el GetElementById.

    Dado que lo estás haciendo desde un RegisterStartupScript, y que por lo tanto no se va a ejecutar mientras no haya un postback de la página, no merece la pena que lo hagas desde javascript. Puedes cambiarle el class al Label directamente desde el lado servidor poniendo lblFecha.CssClass="list-group-item list-group-item-danger".

    viernes, 16 de febrero de 2018 21:16
  • Buenos días.

    Para llegar al control  label dentro del ListView solo tendrías que recorrerlo.

     foreach (ListViewItem item in ListView1.Items)
    
                {
                    Label lbl = (Label)item.FindControl("lblFecha");
                    lbl.CssClass = "list-group-item list-group-item-danger";
                  
                }

    Espero te sirva de ayuda.

    Saludos.

    sábado, 17 de febrero de 2018 14:08

Todas las respuestas

  • Si el label está dentro de un ListBox, el ID no es el mismo que le pusiste en el código fuente, sino que se genera dinámicamente concatenando varias partes, incluyendo un número que se incrementa por cada repetición del label dentro del ListBox. Si haces un "ver fuente" (o usa la F12) en el navegador, podrás ver el ID que tiene el label, y verás que no es simplemente "lblFecha" sino algo más complicado. Por eso no te funciona el GetElementById.

    Dado que lo estás haciendo desde un RegisterStartupScript, y que por lo tanto no se va a ejecutar mientras no haya un postback de la página, no merece la pena que lo hagas desde javascript. Puedes cambiarle el class al Label directamente desde el lado servidor poniendo lblFecha.CssClass="list-group-item list-group-item-danger".

    viernes, 16 de febrero de 2018 21:16
  • Buenos días.

    Para llegar al control  label dentro del ListView solo tendrías que recorrerlo.

     foreach (ListViewItem item in ListView1.Items)
    
                {
                    Label lbl = (Label)item.FindControl("lblFecha");
                    lbl.CssClass = "list-group-item list-group-item-danger";
                  
                }

    Espero te sirva de ayuda.

    Saludos.

    sábado, 17 de febrero de 2018 14:08