47,300 Members
0 added today
498,330 Resources
19 added today

All Devdex   All Gurus  

Datalist Paging (Page No. Wise)
Author: Mansi Shah
Rating:
Visits: 2919

Discuss in Newsgroups

Page:

As datalist does not support paging like gridview. You may require to use paging with datalist. Here is code which will help you to connect paging with your datalist, if your datalist contains large records.

Don't forget to include:

using System.Drawing;

 

public partial class DataList_Paging : System.Web.UI.Page

{ 

    clsProduct Objproduct = null;  // Class file used to get data from Product database

    static int CategoryID = 0;  // Product Category, according to that product datalist will be binded.

    static int PageSize = 10; // "Page[ddlPage]" Datalist pageSize

    static int productPageSize = 5; // "Product[ddlProduct]" Datalist pageSize

    static int totalRecords = 0, totalPages = 0, add = 0;

    int startIndex = 0, endIndex = 0;  // To set Starting Page and End Page of the Datalist "[ddlPages]" from "totalPages"

    static ArrayList list = new ArrayList();  // To store total no. of pages.

 

 

protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            list.Clear();

            SqlConnection conn = new SqlConnection("data source=192.16.0.13;initial catalog=xyz;user id=sa;password=sa;persist security info=True;packet size=4096");

            CategoryID = 56;           

            BindProduct(CategoryID);

            ViewState["LastSelectedPage"] = 1;  // Stores the Last Page Clicked in "ddlPages"

            ViewState["Process"] = "Next";  // Stores Process, can be "Next" or "Previous" according to "lbtnNext" or "lbtnPrev"

            Paging(); // Sets starting Pages to be displayed in "ddlPages" datalist

        }

    }

 

 

 

 

 

#region Paging //SETS THE STARTING ddlPages [ON PAGE LOAD]

    public void Paging()

    {

        for (int i = 0; i <= totalPages; i++)

        {

            if (totalPages <= PageSize)   // If total pages are less than the page size of "ddlPages"

            {

                startIndex = 1;

                endIndex = totalPages;

                PageNoVisibility(startIndex, endIndex);   // Sets the color of the selected page and binds "ddlProduct" datalist

                break;

            }

            if (i == 0)

            {

                startIndex = 1;

                if (totalPages <= PageSize) 

                    endIndex = totalPages;

                else

                    endIndex = PageSize;

                PageNoVisibility(startIndex, endIndex);   // Sets the color of the selected page and binds "ddlProduct" datalist

                break;

            }

       }

   }

    #endregion

 

 

 

#region Page Datalist Binding  //BINDS PAGE DATA LIST FOR PARTICULAR PAGE SIZE DEFINED.

   //THIS FUNCTION WILL BE CALLED ON PAGE LOAD AND ALSO

    //WHEN THE WHOLE SET OF THE DATASET[ddlPages] CHANGES,

    //MEAN ON THE ON NEXT CLICK WHEN LAST PAGE IS SELECTED OR

    //ON PREVIOUS CLICK WHEN FIRST PAGE IS SELECTED.

 

    public void PageNoVisibility(int start, int end)

    {

        ArrayList sublist = new ArrayList();          

        if (start >= 1 && start <= totalPages) // IF THERE ARE ANY PAGES TO BE BIND IN "ddlPages"

        {

            ViewState["FirstInPageSize"] = start; // The first Page which is dispalyed in “ddlPages”

            if (start <= totalPages)

            {          

                //GETS PAGES TO BE DISPLAYED FROM THE TOTAL NO. OF PAGES IN ddlPages [ARRAY LIST "sublist"]

                for (int l = 0; l < list.Count; l++)

                {

                    if (Convert.ToInt32(list[l]) >= start && Convert.ToInt32(list[l]) <= end)

                    {

                        sublist.Add(list[l]);

                        ViewState["LastInPageSize"] = list[l]; // The last page which is displayed in “ddlPages”

                    }

                }

                ddlPages.DataSource = sublist;

                ddlPages.DataBind();

 

                // WHEN NEXT BUTTON HAS BEEN CLICKED.

               if (ViewState["Process"].ToString() == "Next")

                {

                    if (ddlPages.Items.Count >= 1)

                    {

                        LinkButton lbtn1 = (LinkButton)ddlPages.Items[0].FindControl("lbtnPage");

                        lbtn1.ForeColor = Color.Black;

                        ViewState["LastSelectedPage"] = lbtn1.Text;

                    }

                    else

                        lbtnNext.Visible = false;

                }

                

                 //WHEN PREVIOUS BUTTON HAS BEEN CLICKED.

                else if (ViewState["Process"].ToString() == "Prev")

                {               

                    LinkButton lbtn1 = new LinkButton();

                    if (end > ddlPages.Items.Count)                                          

                       lbtn1 = (LinkButton)ddlPages.Items[PageSize - 1].FindControl("lbtnPage");

                    else

                        lbtn1 = (LinkButton)ddlPages.Items[end - 1].FindControl("lbtnPage");                   

                    ViewState["LastSelectedPage"] = lbtn1.Text;

                    lbtn1.ForeColor = Color.Black;

                }

                sublist.Clear();

 

                if (start == totalPages)

                {

                    lbtnNext.Visible = false;

                    lbtnPrev.Visible = false;

                }

            }

            else

                lbtnNext.Visible = false;

 

            // SETS VISIBILITY OF NEXT  AND PREVIOUS BUTTONS

            if (ViewState["LastSelectedPage"] != null && Convert.ToInt32(ViewState["LastSelectedPage"]) == totalPages)

                lbtnNext.Visible = false;

            else if (ViewState["LastSelectedPage"] != null && ViewState["LastSelectedPage"].ToString() == "1")

                lbtnPrev.Visible = false;

 

            // SETS STARTINDEX TO BIND THE "ddlProducts" DATALIST.

            startIndex = (Convert.ToInt32(ViewState["LastSelectedPage"]) - 1) *  productPageSize + 1;

            endIndex = startIndex + productPageSize - 1;

 

            BindProducts(startIndex, productPageSize, CategoryID);        

        }

        else  // IF NO PAGES

        {

            if (ViewState["Process"].ToString() == "Next")

                lbtnNext.Visible = false;

            else if(ViewState["Process"].ToString()=="Prev")

                lbtnPrev.Visible = false;      

        }

    }

   #endregion

 

 

 

#region BindProdcuts //BINDS ddlProdcuts ACCORDING TO START AND PAGESIZE PARAMETERS, ON PAGE BUTTON CLICK OR NEXT,PREVIOUS CLICK.

 

    public void BindProducts(int startIndex, int productPageSize, int CagegoryID)

    {

        Objproduct = new clsProduct();

        DataSet DsProduct = new DataSet();

        DsProduct = Objproduct.GetPagingforPhase(startIndex -1, productPageSize, CategoryID);

        if (DsProduct != null && DsProduct.Tables[0].Rows.Count > 0)

        {

            ddlProduct.DataSource = DsProduct.Tables[0].DefaultView;

            ViewState["DataTable"] = DsProduct.Tables[0];

            ddlProduct.DataBind();

        }

    }

    #endregion

 

 

// “ddlPages” contains link button “lbtnPage” in Item Template

protected void lbtnPage_Command(object sender, CommandEventArgs e)

    {

        if (e.CommandName == "Page")

        {

            startIndex = ((Convert.ToInt32(e.CommandArgument)) - 1) * productPageSize + 1;

            endIndex = startIndex + PageSize - 1;

 

            BindProducts(startIndex, productPageSize, CategoryID);

        }

    }   

 

 

 

protected void lbtnNext_Click(object sender, EventArgs e)

    {

        ViewState["Process"] = "Next";

        lbtnPrev.Visible = true;

        string s = ViewState["LastSelectedPage"].ToString();

        string s1 = ViewState["LastInPageSize"].ToString();

        if (ViewState["LastSelectedPage"].ToString() != ViewState["LastInPageSize"].ToString())

        {

            foreach (DataListItem di in ddlPages.Items)

            {

                LinkButton lbtn = (LinkButton)di.FindControl("lbtnPage");

                if (Convert.ToInt32(lbtn.Text) > Convert.ToInt32(ViewState["LastSelectedPage"]))

                {

                    lbtn.ForeColor = Color.Black;

                    ViewState["LastSelectedPage"] = lbtn.Text;

 

                    startIndex = (Convert.ToInt32(lbtn.Text) - 1) * productPageSize + 1;

                    endIndex = startIndex + productPageSize - 1;

                    BindProducts(startIndex, productPageSize, CategoryID);               

                    break;

                }

                else

                    lbtn.ForeColor = Color.Blue;

            }

        }

        else

            PageNoVisibility((Convert.ToInt32(ViewState["LastInPageSize"])) + 1, (Convert.ToInt32(ViewState["LastInPageSize"])) + PageSize);

 

        if (ViewState["LastSelectedPage"] != null && Convert.ToInt32(ViewState["LastSelectedPage"]) == totalPages)

            lbtnNext.Visible = false;

        else if (ViewState["LastSelectedPage"] != null && ViewState["LastSelectedPage"].ToString() == "1")

            lbtnPrev.Visible = false;

    }

 

 

 

    protected void lbtnPrev_Click(object sender, EventArgs e)

    {

        ViewState["Process"] = "Prev";

        lbtnNext.Visible = true;

        string lastselectedpage = ViewState["LastSelectedPage"].ToString();

        string firstinpagesize = ViewState["FirstInPageSize"].ToString();

        if (ViewState["LastSelectedPage"].ToString() != ViewState["FirstInPageSize"].ToString())

        {

            foreach (DataListItem di in ddlPages.Items)

            {

                LinkButton lbtn = (LinkButton)di.FindControl("lbtnPage");

                lbtn.ForeColor = Color.Blue;

            }

            foreach (DataListItem di in ddlPages.Items)

            {

                LinkButton lbtn = (LinkButton)di.FindControl("lbtnPage");

                if (Convert.ToInt32(lbtn.Text) < Convert.ToInt32(ViewState["LastSelectedPage"]))

                {

                    if (Convert.ToInt32(lbtn.Text) == Convert.ToInt32(ViewState["LastSelectedPage"]) - 1)

                    {

                        lbtn.ForeColor = Color.Black;

                        ViewState["LastSelectedPage"] = lbtn.Text;

 

                    startIndex = (Convert.ToInt32(lbtn.Text) - 1) * productPageSize + 1;

                        endIndex = startIndex + productPageSize - 1;

                        BindProducts(startIndex, productPageSize, CategoryID);

                     

                        break;

                    }

                }               

            }

        }

        else        

            PageNoVisibility(Convert.ToInt32(ViewState["FirstInPageSize"]) - PageSize, (Convert.ToInt32(ViewState["FirstInPageSize"])) - 1);

 

        if (ViewState["LastSelectedPage"] != null && Convert.ToInt32(ViewState["LastSelectedPage"]) == totalPages)

            lbtnNext.Visible = false;

        else if (ViewState["LastSelectedPage"] != null && ViewState["LastSelectedPage"].ToString() == "1")

            lbtnPrev.Visible = false;

   }

 

Database related functions you can find on second page..

 

Next Page >>

Visitor Comments

Sreejith S hi mansi, really appreciated work.good effort. h...

 

Rate this Code Sample






	
	
	



ASP.NET Shopping Cart
Unlimited items/categories
Unlimited options/choices
Ecommerce toolkit for .NET!

ASP ArticlesThis category has been added to your weekly newsletter
ASP Web Sites
ADSI & WSH BooksThis category has been added to your weekly newsletter
FREE ComponentsThis category has been added to your weekly newsletter
ASP EventsThis category has been added to your weekly newsletter
ASP HeadlinesThis category has been added to your weekly newsletter

CSharp ArticlesThis category has been added to your weekly newsletter
C# Web SitesThis category has been added to your weekly newsletter

SQL ArticlesThis category has been added to your weekly newsletter
SQL Events
SQL HeadlinesThis category has been added to your weekly newsletter
SQL Jobs

Jobs in CaliforniaThis category has been added to your weekly newsletter

XML ArticlesThis category has been added to your weekly newsletter
XML BooksThis category has been added to your weekly newsletter
XML Web Sites
XML Tutorials

free asp host

"Alex Homer"This search has been added to your weekly newsletter

Edit My Favorites Edit Profile & Favorites

Web Programming

 




Developersdex Home | ASP | C# | SQL | VB | XML | Gurus
Add Your Link | Add Your Code | FAQ | Advertise | Link To Us | Contact Us |
Copyright © 2008 Developersdex™. All rights reserved.