2
Answers

Grid Paging

Dear Friends,

              
Please clarify my doubt in Grid virtual paging

Am binding the grid in page load ,my objective is If am
having 1000 records in my DB means I don't want to load all records in page load,
I want to load the records based on page index change.

Am having 10 records per each page, if am having 50 records
in db means it should be split up by 10 and it should display it 5 pages, If I
click the 2nd page it should be display 11 to 20 records.

If am having 15 records in my Db means paging must be 1 2 in first page 10
records, 2nd page 5 records likewise it should display

First page should display 10 records, when I click the
second page it should pick the next 10 records from Database.

How can I achieve this scenario?




Answers (2)
1
Satyapriya Nayak
NA 53k 8m 12y
Hi Aarthi,


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Paging_in_GridView._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:GridView id="g1" Runat="Server" gridlines="Horizontal"
        AllowPaging="True"
        PageSize="10"
        AllowSorting="True"
        AutoGenerateColumns="true"
        onpageindexchanging="g1_PageIndexChanging" onrowdatabound="g1_RowDataBound">
 
</asp:GridView>
    </div>
    </form>
</body>
</html>



using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
namespace Paging_in_GridView
{
    public partial class _Default : System.Web.UI.Page
    {
        string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlCommand com;
        SqlDataAdapter sqlda;
        DataSet ds;
        string str;

        protected void Page_Load(object sender, EventArgs e)
        {
            bindgrid();
        }
        void bindgrid()
        {
            SqlConnection con = new SqlConnection(connStr);
            con.Open();
            str = "select * from employee";
            com = new SqlCommand(str, con);
            sqlda = new SqlDataAdapter(com);
            ds = new DataSet();
            sqlda.Fill(ds, "employee");
            g1.DataMember = "employee";
            g1.DataSource = ds;
            g1.DataBind();
            con.Close();
        }

        protected void g1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            g1.PageIndex = e.NewPageIndex;
            bindgrid();
        }

      
    }
}


Thanks
If this post helps you mark it as answer
0
Naresh Avari
NA 811 1.6m 12y
Hi Aarthi,

It is just so simple.....
  • First you have to give pagesize to your GridView and make AllowPaging=True
  • declare pageIndex in PageIndexChanged event and Bind GridView again. Here I am giving you a sample.


GridView:

<asp:GridView ID="gvProducts" runat="server" AutoGenerateColumns="False" Width="100%"
        OnPageIndexChanging="gvProducts_PageIndexChanging" AllowPaging="true" PageSize="10">
        <Columns>
           
        </Columns>
    </asp:GridView>

Here I am Binding Datagrid in Page_Load:


protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //Here you GridView binding 
                BindGrid();
            }
        }

protected void BindGrid()
        {
            //Here bind gridview using SqlDataAdapter
        }


Here I am Changing Page Index:

protected void gvProducts_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvProducts.PageIndex = e.NewPageIndex;
            BindGrid();
        }



I hope this helps...