Home > DeveloperSection > Articles > Implement Paging in Datagridview C#

Implement Paging in Datagridview C#


C# C# 
Ratings:
0 Comment(s)
 16673  View(s)
Rate this:

Implement Paging in Datagridview C#

Paging

Paging is a concept which is helpful for our data management; in this article I am going to explain a demo which shows how to implement paging in datagridview.

Using the code:-

1.       Create a new project in VS Studio 2010.

2.       Drag a datagridview from toolbox and drop on form, added datagridview with name dgvPaging.

3.       Drag toolstrip from toolbox and drop on form (I’m renaming toolstrip with toolStripPaging).

4.       Right click on toolStripPaging and select edit option, after selecting edit open a dialog box where we add buttons.

Implement paging in Datagridview C#

5.        Click on OK.

6.       Now after that get all button Click event.

Form1.cs code: -

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using DatagridviewPaging;

 

namespace DatagridviewPaging

{

    public partial class formPaging : Form

    {

        public formPaging()

        {

            InitializeComponent();

        }

        private int ActivePage = 1;//Here give the by default selected page in datagridview

        int PagesCounter = 1; //Here give the by default count page in datagridview

        int DefaultShowRows = 5; //Here we give how many data shows in datagridview

        BindingList<listData> Baselist = null;

        BindingList<listData> Templist = null;

        private void RebindGridForPageChange()

        {

            //Rebinding the Datagridview with data

            int datasourcestartIndex = (ActivePage - 1) * DefaultShowRows;

            Templist = new BindingList<listData>();

            for (int i = datasourcestartIndex; i < datasourcestartIndex + DefaultShowRows; i++)

            {

                if (i >= Baselist.Count)

                    break;

 

                Templist.Add(Baselist[i]);

            }

 

            dgvPaging.DataSource = Templist;

            dgvWidth();

 

 

        }

        private void dgvWidth()

        {

            dgvPaging.Columns[0].Width = 200;

            dgvPaging.Columns[1].Width = 100;

            dgvPaging.Columns[0].HeaderText = "Student Name";

            dgvPaging.Columns[1].HeaderText = "Student Class";

 

        }

        private void RefreshPagination()

        {

            ToolStripButton[] items = new ToolStripButton[] { toolStripButton1, toolStripButton2, toolStripButton3, toolStripButton4, toolStripButton5 };

            //pageStartIndex contains the first button number of pagination.

            int pageStartIndex = 1;

 

            if (PagesCounter > 5 && ActivePage > 2)

                pageStartIndex = ActivePage - 2;

 

            if (PagesCounter > 5 && ActivePage > PagesCounter - 2)

                pageStartIndex = PagesCounter - 4;

 

            for (int i = pageStartIndex; i < pageStartIndex + 5; i++)

            {

                if (i > PagesCounter)

                {

                    items[i - pageStartIndex].Visible = false;

                }

                else

                {

                    //Changing the page numbers

                    items[i - pageStartIndex].Text = i.ToString(System.Globalization.CultureInfo.InvariantCulture);

 

                    //Setting the Appearance of the page number buttons

                    if (i == ActivePage)

                    {

                        items[i - pageStartIndex].BackColor = System.Drawing.ColorTranslator.FromHtml("#83D6F6");

                        items[i - pageStartIndex].ForeColor = Color.White;

                    }

                    else

                    {

                        items[i - pageStartIndex].BackColor = Color.White;

                        items[i - pageStartIndex].ForeColor = System.Drawing.ColorTranslator.FromHtml("#83D6F6");

                    }

                }

            }

 

            //Enabling or Disalbing pagination first, last, previous , next buttons

            if (ActivePage == 1)

                btnBackward.Enabled = btnFirst.Enabled = false;

            else

                btnBackward.Enabled = btnFirst.Enabled = true;

 

            if (ActivePage == PagesCounter)

                btnForward.Enabled = btnLast.Enabled = false;

 

            else

                btnForward.Enabled = btnLast.Enabled = true;

        }

        DataTable _dataTable = new DataTable();

        private BindingList<listData> FillDataforGrid()

        {

            BindingList<listData> list = new BindingList<listData>();

            for (int i = 0; i < _dataTable.Rows.Count; i++)

            {

                listData obj = new listData(_dataTable.Rows[i][0].ToString(), _dataTable.Rows[i][1].ToString());

                list.Add(obj);

            }

 

            return list;

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            try

            {

                _dataTable.Columns.Add("Student Name", typeof(string));

                _dataTable.Columns.Add("Student Class", typeof(string));

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

                {

                    //dgvPaging.Rows.Add("Student Name" + i, "Student Class" + i);

                    _dataTable.Rows.Add("Student Name" + i, "Student Class" + i);

                }

                Baselist = FillDataforGrid();

                PagesCounter = Convert.ToInt32(Math.Ceiling(Baselist.Count * 1.0 / DefaultShowRows));

                RefreshPagination();

                RebindGridForPageChange();

            }

            catch (Exception ex)

            {

            }

        }

        private void btnFirst_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

        private void btnBackward_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

        private void toolStripButton1_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

 

            }

            catch (Exception) { }

        }

 

        private void toolStripButton2_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

        private void toolStripButton3_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

        private void toolStripButton4_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

        private void toolStripButton5_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

 

        private void btnForward_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

        private void btnLast_Click(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

        private void btnFirst_Click_1(object sender, EventArgs e)

        {

            try

            {

                ToolStripButton ToolStripButton = ((ToolStripButton)sender);

 

                //Determining the current page

                if (ToolStripButton == btnBackward)

                    ActivePage--;

                else if (ToolStripButton == btnForward)

                    ActivePage++;

                else if (ToolStripButton == btnLast)

                    ActivePage = PagesCounter;

                else if (ToolStripButton == btnFirst)

                    ActivePage = 1;

                else

                    ActivePage = Convert.ToInt32(ToolStripButton.Text, System.Globalization.CultureInfo.InvariantCulture);

 

                if (ActivePage < 1)

                    ActivePage = 1;

                else if (ActivePage > PagesCounter)

                    ActivePage = PagesCounter;

 

                //Rebind the Datagridview with the data.

                RebindGridForPageChange();

 

                //Change the pagiantions buttons according to page number

                RefreshPagination();

            }

            catch (Exception) { }

        }

 

 

 

    }

}

 

 

listData class code: -

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace DatagridviewPaging

{

    class listData

    {

        public listData(string stuName, string stuClass)

        {

            this.stuName = stuName;

            this.stuClass = stuClass;

 

        }

 

        private string stuName;

 

        public string StudName

        {

            get { return stuName; }

            set { stuName = value; }

        }

       

        private string stuClass;

 

        public string StuClass

        {

            get { return stuClass; }

            set { stuClass = value; }

        }

 

 

    }

}

 

Output: -

Implement paging in Datagridview C#


Don't want to miss updates? Please click the below button!

Follow MindStick