Domanda

ho un filtro alfabetico consistono di 26 pulsante di collegamento creata dinamicamente sulla selezione di un pulsante qualsiasi link si filtrando il nome utente di sulla base di alfabeto e cambiando il suo colore arancione per renderlo diverso dagli altri linkbuttons si sta lavorando bene, ma se ci sono più il numero di utenti associato a un particolare alfabeto e su come applicare il filtro si sta filtrando l'utente sulla base di tale alfabeto e mostrando loro in un elenco sulla cliccando sul pager dati pagina successiva o qualsiasi altro numero di pagina sul pulsante Link modifiche il suo colore al colore di default, ma voglio mantenere che ha evidenziato fino a quando ea meno che non sia stato selezionato altro pulsante di collegamento il mio codice

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();
        }
È stato utile?

Soluzione

Spero che ho capito la tua domanda.

Si sta impostando il vostro articolo Selected_Character nel gestore di comandi e quindi impostando la classe del tasto per evidenziarlo. Questo solo viene generato quando il pulsante viene premuto, non quando si passa alla pagina successiva. Perché non separare queste due operazioni. Impostare la classe del pulsante link sul PreRender se le partite Selected_Character. In questo modo anche quando la pagina rimarrà messo in evidenza il pulsante di collegamento.

Vorrei anche impostare il carattere selezionato come parametro di stringa di query, se qualcuno copia e paste un link alla tua pagina il pulsante non metterebbe in evidenza ei dati corretti non visualizzerebbe.

Spero che questo aiuti.

Modifica:. Non hanno testato il seguito ma forse ti permetterà di cominciare

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";
    }
}

NB Sarà inoltre necessario per cambiare la BindTagList di utilizzare la stringa di query anche. Sto assumendo si chiama questa in caso di caricamento della pagina.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top