bouton Lien changeant de couleur quand un événement de téléavertisseur de données a lieu

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

  •  29-09-2019
  •  | 
  •  

Question

i ont un filtre alphabétique se composent de 26 bouton lien créé dynamiquement sur la sélection des touches de lien, il filtre le nom de l'utilisateur de sur la base de l'alphabet et en changeant sa couleur à l'orange pour le rendre différent des autres linkbuttons il fonctionne très bien, mais s'il y a plus de nombre d'utilisateur associé à un alphabet particulier et sur l'application de filtre, il est le filtrage à l'utilisateur sur la base de cet alphabet et les montrant dans une vue de liste en cliquant sur le téléavertisseur de données page suivante ou tout autre numéro de page le bouton change de lien sa couleur à la couleur par défaut, mais je veux garder ce en surbrillance jusqu'à ce que et à moins que tout autre bouton de liaison est sélectionné mon code

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();
        }
Était-ce utile?

La solution

J'espère avoir compris votre question.

Vous définissez votre article Selected_Character dans le gestionnaire de commande, puis définir la classe du bouton pour le mettre en évidence. Cela ne se déclenché lorsque le bouton est cliqué, pas lorsque vous passez à la page suivante. Pourquoi ne pas séparer ces deux opérations. Définissez la classe du bouton de lien sur prerender si les matchs de Selected_Character. De cette façon, même si vous la page sur le bouton de lien restera en surbrillance.

Je également définir votre personnage sélectionné comme paramètre de chaîne de requête, si quelqu'un copie et colle un lien vers votre page le bouton ne mettre en évidence et les données correctes n'affiche.

Hope this helps.

Edit:. Ai pas testé le dessous mais peut-être il vous lancer

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

Vous aurez également N.B. besoin de changer votre BindTagList d'utiliser la chaîne de requête aussi. Je suppose que vous appelez cela en cas de chargement de la page.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top