C# 在自定义分页中查找所选项目

C# 在自定义分页中查找所选项目,c#,asp.net,C#,Asp.net,我将自定义分页写入中继器。下面是代码。当我点击链接按钮时,如何设置选中的链接按钮,或者如何设置css类 首先,我尝试在lbl_Click函数中设置css类,如下lnk.CssClass=“classname”

我将自定义分页写入中继器。下面是代码。当我点击链接按钮时,如何设置选中的链接按钮,或者如何设置css类

首先,我尝试在lbl_Click函数中设置css类,如下
lnk.CssClass=“classname”
private void CreatePagingControl()
    {                           
         for (int i = 0; i < pages; i++)
         {
            LinkButton lnk = new LinkButton();
            lnk.Click += new EventHandler(lbl_Click);
            lnk.ID = "lnkPage" + (i + 1).ToString();
            lnk.Text = (i + 1).ToString();
            plcPaging.Controls.Add(lnk);
            Label spacer = new Label();
            spacer.Text = "&nbsp;|&nbsp;";
            plcPaging.Controls.Add(spacer);
         }            
    }

    void lbl_Click(object sender, EventArgs e)
    {
        LinkButton lnk = sender as LinkButton;
        int currentPage = int.Parse(lnk.Text);
        int take = currentPage * 15;
        int skip = currentPage == 1 ? 0 : take - 15;
        FetchData(take, skip);
    }
private void CreatePagingControl()
{                           
对于(int i=0;i
aspx


试试这个

把你的aspx换成这个

<div id="pageingDiv">
<asp:PlaceHolder ID="plcPaging" runat="server" />
<asp:HiddenField id="currentId" runatserver" value="1" />
</div>
然后在代码隐藏中添加css

void lbl_Click(object sender, EventArgs e)
{
LinkButton lnk = sender as LinkButton;
int currentPage = int.Parse(lnk.Text);
int take = currentPage * 15;
int skip = currentPage == 1 ? 0 : take - 15;
FetchData(take, skip);
//add css here
currentId.Value=currentPage.ToString();
}

也许您可以尝试这样的方法,当CssClass包含多个类时,这种方法也应该有效

// removing a cssClass
protected String removeCssClass(string cssClass, string toRemove)
{
    return String.Join(" ", cssClass.Split(' ').Except(new[] {toRemove}).ToArray());
}

void lbl_Click(object sender, EventArgs e)
{
    // resetting all selected items
    plcPaging.Controls
      .OfType<Label>()
      .Where(l => l.ID.StartsWith("lnkPage") && l.CssClass.Split(' ').Contains("selectedClassName")).ToList()
      .ForEach(l => l.CssClass = removeCssClass(l.CssClass, "classname"));
    LinkButton lnk = sender as LinkButton;
    // setting selected item
    lnk.CssClass = "classname";
    int currentPage = int.Parse(lnk.Text);
    int take = currentPage * 15;
    int skip = currentPage == 1 ? 0 : take - 15;
    FetchData(take, skip);
}
//删除cssClass
受保护的字符串移除类(字符串cssClass、字符串toRemove)
{
返回字符串.Join(“”,cssClass.Split(“”).Except(new[]{toRemove}).ToArray());
}
无效lbl_单击(对象发送者,事件参数e)
{
//重置所有选定项目
可编程逻辑控制器
第()类
其中(l=>l.ID.StartsWith(“lnkPage”)和&l.CssClass.Split(“”)。包含(“selectedClassName”)。ToList()
.ForEach(l=>l.CssClass=removeCssClass(l.CssClass,“classname”);
LinkButton lnk=发送方为LinkButton;
//设置所选项目
lnk.CssClass=“classname”;
int currentPage=int.Parse(lnk.Text);
int take=currentPage*15;
int skip=currentPage==1?0:取-15;
获取数据(获取、跳过);
}

希望这将有助于

@jbl;是的,我设置了
lnk.CssClass=“classname”您的跳过/执行逻辑有缺陷。您应该每次取15,然后跳过
(当前第1页)*15
void lbl_Click(object sender, EventArgs e)
{
LinkButton lnk = sender as LinkButton;
int currentPage = int.Parse(lnk.Text);
int take = currentPage * 15;
int skip = currentPage == 1 ? 0 : take - 15;
FetchData(take, skip);
//add css here
currentId.Value=currentPage.ToString();
}
// removing a cssClass
protected String removeCssClass(string cssClass, string toRemove)
{
    return String.Join(" ", cssClass.Split(' ').Except(new[] {toRemove}).ToArray());
}

void lbl_Click(object sender, EventArgs e)
{
    // resetting all selected items
    plcPaging.Controls
      .OfType<Label>()
      .Where(l => l.ID.StartsWith("lnkPage") && l.CssClass.Split(' ').Contains("selectedClassName")).ToList()
      .ForEach(l => l.CssClass = removeCssClass(l.CssClass, "classname"));
    LinkButton lnk = sender as LinkButton;
    // setting selected item
    lnk.CssClass = "classname";
    int currentPage = int.Parse(lnk.Text);
    int take = currentPage * 15;
    int skip = currentPage == 1 ? 0 : take - 15;
    FetchData(take, skip);
}