botón de enlace cambiar de color cuando cualquier caso localizador de datos se lleva a cabo

StackOverflow https://stackoverflow.com/questions/3500368

  •  29-09-2019
  •  | 
  •  

Pregunta

tengo un filtro alfabético consisten en 26 botón de enlace creado de forma dinámica en seleccionar cualquier botón de enlace que está filtrando el nombre de usuario en la base de alfabeto y cambiando su color a naranja para que sea diferente de otros linkbuttons que está trabajando bien, pero si hay más número de usuario asociado con un alfabeto particular y en la aplicación del filtro se está filtrando al usuario sobre la base de que el alfabeto y mostrándolos en una vista de lista al hacer clic en el localizador datos de la página siguiente o cualquier otro número de la página el botón cambia enlace su color a color por defecto, pero quiero seguir destacó que hasta ya menos que se seleccione otro botón de enlace mi código

protected void Page_Init(object sender, EventArgs e)
    {
        // Adding Dynamically linkbuttons for all alphabets(i.e. A-Z)
        for (char asciiValue = 'A'; asciiValue <= 'Z'; asciiValue++)
        {
            LinkButton lbtnCharacter = new LinkButton();
            lbtnCharacter.ID = "lbtnCharacter" + asciiValue;
            divAlphabets.Controls.Add(lbtnCharacter);

            // Setting the properties of dynamically created Linkbutton.
            lbtnCharacter.Text = Convert.ToString(asciiValue);
            lbtnCharacter.CssClass = "firstCharacter";
            lbtnCharacter.ToolTip = "Show Tags starting with '" + Convert.ToString(asciiValue) + "'";
            lbtnCharacter.CommandArgument = Convert.ToString(asciiValue);
            lbtnCharacter.Command += new CommandEventHandler(lbtnCharacter_Command);
        }
    }



// For assigning default color to linkbutton text in page load
        foreach (var ctrl in divAlphabets.Controls)
        {
            if (ctrl is LinkButton)
            ((LinkButton)ctrl).CssClass = "firstCharacter";
        }

void lbtnCharacter_Command(object sender, CommandEventArgs e)
        {
            // Storing the values of pressed alphabet in viewstate.
            ViewState["Selected_Character"] = e.CommandArgument;
            LinkButton lbtnSelected = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + e.CommandArgument);
            lbtnSelected.CssClass = "firstCharacter highlighted";
            txtTagFilter.Text = string.Empty;

            BindTagList();
        }
¿Fue útil?

Solución

Espero que he entendido su pregunta.

que configura el elemento Selected_Character en el controlador de comandos, y luego poner la clase del botón para resaltarlo. Esto sólo se activa cuando se hace clic en el botón, no cuando se mueve a la siguiente página. ¿Por qué no separar estas dos operaciones. Establecer la clase del botón de enlace en prerender si los partidos Selected_Character. De esa manera, incluso cuando la página se quedará resaltado el botón de enlace.

También establecería su carácter seleccionado como un parámetro de cadena de consulta, si alguien copia y pega un enlace a su página el botón no resaltaría y los datos correctos, no se mostrará.

Espero que esto ayude.

Editar:. ¿No han probado el siguiente, pero tal vez le ayudará a empezar

void lbtnCharacter_Command(object sender, CommandEventArgs e)
{
    // redirect to self with tag as qs parameter
    Response.Redirect(string.Format("{0}?tag={1}", Request.Url.GetLeftPart(UriPartial.Path), e.CommandArgument));
}

protected void Page_PreRender(object sender, EventArgs e) 
{
    if (Request.QueryString["tag"] != null) {
        LinkButton lbtnSelected = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + Request.QueryString["tag"]);
        lbtnSelected.CssClass = "firstCharacter highlighted";
    }
}

N.B También tendrá que cambiar su BindTagList utilizar la cadena de consulta también. Estoy asumiendo que se llama a este en caso de carga de página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top