2010-08-17 2 views
0

J'ai un filtre alphabétique composé de 26 bouton de lien créé dynamiquement en sélectionnant un bouton de lien il filtre le nom de l'utilisateur sur la base de l'alphabet et en changeant sa couleur en orange à le rendre différent des autres linkbuttons cela fonctionne bien mais s'il y a plus de nombre d'utilisateurs associés à un alphabet particulier et en appliquant le filtre il filtre l'utilisateur sur la base de cet alphabet et les montre dans une vue de liste en cliquant sur le pager de données page suivante ou tout autre numéro de page le bouton lien change de couleur par défaut couleur, mais je veux garder ce en surbrillance jusqu'à ce que et à moins que d'autres bouton de lien est sélectionné mon codeBouton de lien changeant de couleur quand un événement de pagineur de données a lieu

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(); 
     } 

Répondre

1

J'espère avoir compris votre question.

Vous définissez votre élément Selected_Character dans le gestionnaire de commandes, puis définissez la classe du bouton pour le mettre en surbrillance. Cela ne se déclenche que lorsque vous cliquez sur le bouton, 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 le caractère Selected_Character correspond. De cette façon, même lorsque vous cliquez sur le bouton de lien restera en surbrillance.

Je définirais également votre caractère sélectionné en tant que paramètre de chaîne de requête, si quelqu'un copie et colle un lien vers votre page, le bouton ne serait pas en surbrillance et les données correctes ne s'afficheraient pas.

Espérons que cela aide.

Modifier: N'avez pas testé le ci-dessous, mais peut-être qu'il vous permettra de démarrer.

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 Vous devrez également modifier votre BindTagList pour utiliser également la chaîne de requête. Je suppose que vous appelez cela dans l'événement de chargement de la page.

Questions connexes