0

私はアルファベットのフィルターで構成されています26の動的に作成されたリンクボタンで構成されていますリンクボタンを選択すると、アルファベットに基づいてユーザーの名前がフィルタリングされ、他のリンクボタンとは異なるように色がオレンジに変更されますが、特定のアルファベットに関連付けられているユーザーの数が増え、フィルターを適用すると、そのアルファベットに基づいてユーザーがフィルターされ、データページャーの次のページまたは他のページ番号をクリックするとリストビューに表示され、リンクボタンの色が次のように変わります。デフォルトの色ですが、他のリンクボタンが選択されない限り、それを強調表示したままにします私のコード

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

1 に答える 1

1

私はあなたの質問を理解したと思います。

コマンドハンドラーでSelected_Characterアイテムを設定してから、ボタンのクラスを設定して強調表示します。これは、ボタンがクリックされたときにのみ発生し、次のページに移動したときに発生しません。これら2つの操作を分離してみませんか。Selected_Characterが一致する場合は、事前レンダリングでリンクボタンのクラスを設定します。そうすれば、ページをめくってもリンクボタンは強調表示されたままになります。

また、選択した文字をクエリ文字列パラメータとして設定します。誰かがあなたのページへのリンクをコピーして貼り付けると、ボタンが強調表示されず、正しいデータが表示されません。

お役に立てれば。

編集:以下をテストしていませんが、おそらくそれはあなたが始めるのに役立つでしょう。

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

注意:クエリ文字列も使用するには、BindTagListも変更する必要があります。ページ読み込みイベントでこれを呼び出すと仮定します。

于 2010-08-17T07:56:15.103 に答える