我正在使用以下事件将数字添加到列表项目页面
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());
int limit = lastnumber - 5;
for (int i = limit; i <= pagecount; i++)
{
if (i < lastnumber && i > 1)
{
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();
}
如果最后一个数字是45那么它就会产生40 41 42 43 44 45。 现在问题是,如果最后一个数字包含6或&lt; 5甚至是负数,它应该与会话[“orignalpages”]绑定转发器;其中包含1 2 3 4 5 ...上面的代码不能这样工作。它会向列表项添加负数。 请帮帮我!!!
答案 0 :(得分:1)
您的限制低于1,因此您必须将其明确设置为1.
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());
int limit = lastnumber - 5;
//////////////////////////////////////////////////////
if (limit < 1) limit = 1; //set the limit explicit to 1
//////////////////////////////////////////////////////
for (int i = limit; i <= pagecount; i++)
{
if (i < lastnumber && i > 1)
{
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 :(得分:1)
嗨,也许我会误解你的问题,但你说的是if last number contains 6 or < 5 or even negative numbers, it should bind repeater with Session["orignalpages"];
那么你的逻辑不应该像这样: -
if (lastnumber <= 6)
{
for (int i = limit; i <= pagecount; i++)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
}
}
else
{
rptPager.DataSource = Session["orignalpages"];
rptPager.DataBind();
}