Frage

ich habe ein alphabetisches Filter bestehen aus 26 dynamisch erzeugten Link-Taste zur Auswahl von beliebigen Link-Taste, filtert den Namen des Benutzers auf der Grundlage des Alphabets und ändert seine Farbe Orange, um es von anderen Linkbuttons anders zu machen es gut funktioniert, aber wenn es mehr Anzahl der Benutzer mit einem bestimmten Alphabet zugeordnet ist, und auf der Anwendung Filter ist das filtern des Benutzers auf der Grundlage dieses Alphabets und zeigt sie in einer Listenansicht auf klicken auf das Daten-Pager nächste Seite oder eine andere Seitennummer der Verknüpfungstaste ändert seine Farbe Standardfarbe, aber ich möchte halten, dass hervorgehoben, solange nicht andere Link-Taste ausgewählt wird mein 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();
        }
War es hilfreich?

Lösung

Ich hoffe, dass ich Ihre Frage verstanden.

Sie Ihr Selected_Character Element in den Befehlshandler festlegen und dann die Einstellung die Klasse der Taste, um es zu markieren. Dies wird nur ausgelöst, wenn die Schaltfläche geklickt wird, nicht, wenn Sie auf der nächsten Seite. Warum nicht diese beiden Operationen trennen. Stellen Sie die Klasse der Link-Taste auf Prerender wenn die Selected_Character Streichhölzer. Auf diese Weise, auch wenn Sie Seite wird der Link-Taste markiert bleiben.

Ich würde auch Ihren ausgewählten Charakter als Query-String-Parameter festzulegen, wenn jemand Kopien und einen Link zu Ihrer Seite Pasten würde die Schaltfläche nicht markieren und die richtigen Daten nicht angezeigt werden.

Hope, das hilft.

Edit:. Nicht getestet das unten aber vielleicht wird es Ihnen den Start

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 Sie werden auch Ihre BindTagList ändern müssen auch die Query-String zu verwenden. Ich nehme an, Sie nennen dies in dem Seitenladeereignis.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top