我有一个字母滤波器由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();
        }
有帮助吗?

解决方案

我希望我理解你的问题。

您正在命令处理程序中设置 Selected_Character 项,然后设置按钮的类以突出显示它。仅当单击按钮时才会触发此操作,而不是在您移至下一页时触发。为什么不把这两个操作分开呢?如果 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 以也使用查询字符串。我假设您在页面加载事件中调用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top