Nida
Nida

Reputation: 1702

Avoiding negative numbers in list items

I am using below event for adding numbers to the list item 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());

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

It works like if the last number is 45 then it generates 40 41 42 43 44 45. Now the issue if last number contains 6 or < 5 or even negative numbers, it should bind repeater with Session["orignalpages"]; which contains 1 2 3 4 5... The above code doesn't work this way. It adds negative numbers to the list items. Please help me !!!

Upvotes: 0

Views: 82

Answers (2)

KanisXXX
KanisXXX

Reputation: 777

Hi maybe i am misundersting your question but you said like if last number contains 6 or < 5 or even negative numbers, it should bind repeater with Session["orignalpages"];

then shouldn't your logic is to be like this :-

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

Upvotes: 1

PatrickSchiefer
PatrickSchiefer

Reputation: 161

Your limit is lower then 1 so you had to set it explicit to 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();
}

Upvotes: 1

Related Questions