避免列表项中的负数

时间:2016-05-04 05:39:01

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

我正在使用以下事件将数字添加到列表项目页面

    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 ...上面的代码不能这样工作。它会向列表项添加负数。 请帮帮我!!!

2 个答案:

答案 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();
            }