上一个按钮的问题

时间:2016-05-03 10:02:04

标签: c# asp.net c#-4.0 pagination

我正在使用下面的代码行来生成我创建为自定义控件的分页页码。我在其中添加了转发器控件。我使用PopulatePager()方法填充带有页码的转发器。 我添加了两个按钮,一个用于下一组页码,另一个用于上一组页码。实际上我总共有49个页码,显示所有页码并不好看。现在我们必须一次只显示5个数字,例如<< 1 2 3 4 5>。当用户点击>>按钮然后它将像<< 6 7 8 9 10> ......等等。我创建了两个事件lnknext_Click()和lnkprev_Click()。

下一步按钮工作正常,但上一个按钮无法正常工作。 例如,如果我们在<< 22 23 24 25 26>然后点击<<按钮,它将显示<< 16 17 18 19 20 21>然后再次点击它显示<< 1 2 3 4 5>而不是<< 10 11 12 13 14 15>> ... 请帮我!!!

       public void PopulatePager()
       {
        int recordCount = TotalPages;
        if (PageSizeChanged != null)
        {
            HiddenField hd = new HiddenField();

            int current;
            current = PageIndex;
            int pre;
            int Next;
            double dblPageCount = (double)((decimal)recordCount / decimal.Parse(ddlPageSize.SelectedValue));
            int pageCount = TotalPages;

            List<ListItem> pages = new List<ListItem>();
            if (pageCount > 0)
            {
                //pages.Add(new ListItem("First", "1", PageIndex > 1));
                current = PageIndex;
                pre = --PageIndex;
                PageIndex = current;

                // pages.Add(new ListItem("Previous", pre.ToString(), PageIndex > 1));

                for (int i = 1; i <= pageCount; i++)
                {
                    if (i <= 5)
                    {
                        pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
                    }
                }
                int currentPage = PageIndex;
                Next = ++PageIndex;
                PageIndex = currentPage;
                //  pages.Add(new ListItem("Next", Next.ToString(), PageIndex < pageCount));
                //  pages.Add(new ListItem("Last", pageCount.ToString(), PageIndex < pageCount));

                hd.Value = (pre.ToString());


            }
            if (Session["pages"] != null)
            {
                rptPager.DataSource = Session["pages"];
                rptPager.DataBind();
            }
            else
            {
                rptPager.DataSource = pages;
                rptPager.DataBind();
            }

            Session["lastnumber"] = 5;
            Session["pagecount"] = pageCount;
            Session["orignalpages"] = pages;

        }
    }

    protected void lnkprev_Click(object sender, EventArgs e)
    {
        List<ListItem> pages = new List<ListItem>();
        int pagecount = Convert.ToInt32(Session["pagecount"].ToString());
        int lastnumber = Convert.ToInt32(Session["lastnumber"].ToString());
        if (lastnumber > pagecount)
        {
            Session["lastnumber"] = pagecount - 5;
            lastnumber = pagecount - 5;
            Session["pagecount"] = pagecount;
            Session["orignalpages"] = pages;

        }
        else
        {

            Session["lastnumber"] = 1;
            lastnumber = 1;
            Session["pagecount"] = pagecount;
            Session["orignalpages"] = pages;
        }

        int limit = lastnumber + 5;
        for (int i = lastnumber; i <= pagecount; i++)
        {
            if (i <= limit && i > 0)
            {
                pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
            }
            else
            {
                rptPager.DataSource = Session["orignalpages"];
                rptPager.DataBind();
            }
        }
        Session["lastnumber"] = limit;
        Session["pagecount"] = pagecount;

        Session["pages"] = pages;

        rptPager.DataSource = pages;
        rptPager.DataBind();
    }
    protected void lnknext_Click(object sender, EventArgs e)
    {
        List<ListItem> pages = new List<ListItem>();
        int pagecount = Convert.ToInt32(Session["pagecount"].ToString());
        int lastnumber = Convert.ToInt32(Session["lastnumber"].ToString());
        if (lastnumber > pagecount)
        {
            Session["lastnumber"] = 1;
            lastnumber = 1;
            Session["pagecount"] = pagecount;
            Session["orignalpages"] = pages;

        }


        int limit = lastnumber + 4;
        for (int i = lastnumber; i <= pagecount; i++)
        {
            if (i <= limit)
            {
                pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
            }
            else
            {
                rptPager.DataSource = Session["orignalpages"];
                rptPager.DataBind();
            }
            Session["lastnumber"] = limit;
            Session["pagecount"] = pagecount;

            Session["pages"] = pages;

            rptPager.DataSource = pages;
            rptPager.DataBind();
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以使用“DataTable”javascript功能来解决此问题。请参阅https://www.datatables.net/

在此您只需要在下面的代码中提供您的表格。

$(document).ready(function(){
    $('#myTable').DataTable();
});

如果您需要进一步的帮助,请告诉我。

由于