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 项,然后设置按钮的类以突出显示它。这只会在单击按钮时触发,而不是在您移动到下一页时触发。为什么不将这两个操作分开。如果 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 回答