我正在使用下面的代码行来生成我创建为自定义控件的分页页码。我在其中添加了转发器控件。我使用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();
}
}
答案 0 :(得分:1)
您可以使用“DataTable”javascript功能来解决此问题。请参阅https://www.datatables.net/。
在此您只需要在下面的代码中提供您的表格。
$(document).ready(function(){
$('#myTable').DataTable();
});
如果您需要进一步的帮助,请告诉我。
由于