Hi,
I am using Next, Previous,First and Last buttons for the gridview control in asp.net. i am displaying around 25 rows of data per page in the gridview. after clicking next button it should display the next 25 rows of data i.e from 26 to 50th row it should show. after clicking previous button it should show last 25 data in gridview. first means it should go to the first page and last means it should go to the last page of gridview. how to do this using asp.net. please can anybody help me regarding this.
Loading
Prabhu RajaPosted Oct 21, 2011, 6:25 AM
TulasiPosted Oct 21, 2011, 7:22 AM
finally u got it . k nice
AshwiniPosted Oct 21, 2011, 6:34 AM
I got the solution, problem was with my button eventhandlers. i have changed button eventhandlers then i got the solution.
AshwiniPosted Oct 21, 2011, 6:31 AM
We have to Handle PageIndexChanging Event, other-wise it will result in error. Thats why we should use that one.
AshwiniPosted Oct 21, 2011, 6:25 AM
I have changed button event handler i got the solution it's working fine really great thanks for your replay.
TulasiPosted Oct 21, 2011, 6:23 AM
why did u add pageindexchanging event for gridview , remove that event and try once again
Prabhu RajaPosted Oct 21, 2011, 6:21 AM
TulasiPosted Oct 21, 2011, 6:19 AM
In ur souce code i didnt observe OnClick="btnNext_click" property ..
did u check the code in button click event is executing or not by placing brk point .
where did u get problem in my source.
AshwiniPosted Oct 21, 2011, 6:19 AM
Prabhu RajaPosted Oct 21, 2011, 6:18 AM
Code Behind as,
Prabhu RajaPosted Oct 21, 2011, 6:16 AM
AshwiniPosted Oct 21, 2011, 6:13 AM
Prabhu RajaPosted Oct 21, 2011, 6:12 AM
AshwiniPosted Oct 21, 2011, 6:03 AM
I have followed all the procedure what you have sent but still all the 4 buttons are not working, please give me suggestions. By code is as shown below
My design page source code is as shown below
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="nextpev.aspx.cs" Inherits="nextpev" %>
and my code aspx.cs page code is as shown below
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
public partial class nextpev : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Bind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
if (this.gridview1.PageCount <= e.NewPageIndex)
this.gridview1.PageIndex = 0;
else
this.gridview1.PageIndex = e.NewPageIndex;
Bind();
}
public void Bind()
{
SqlConnection con = new SqlConnection("Data Source=hobvision03;Initial Catalog=master;user id=sa;password=hobvision");
con.Open();
SqlDataAdapter a = new SqlDataAdapter("select * from sheet1$", con);
DataTable t = new DataTable();
a.Fill(t);
gridview1.DataSource = t;
gridview1.DataBind();
}
protected void btnnext_Click(object sender, EventArgs e)
{
int i = gridview1.PageIndex + 1;
if (i <= gridview1.PageCount)
{
gridview1.PageIndex = i;
btnlast.Enabled = true;
btnprevious.Enabled = true;
btnfirst.Enabled = true;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex)
{
btnnext.Enabled = false;
btnlast.Enabled = false;
}
Bind();
}
protected void btnprevious_Click(object sender, EventArgs e)
{
int i = gridview1.PageCount;
if (gridview1.PageIndex > 0)
{
gridview1.PageIndex = gridview1.PageIndex - 1;
btnlast.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnfirst.Enabled = false;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex + 1)
{
btnnext.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnprevious.Enabled = false;
}
Bind();
}
protected void btnlast_Click(object sender, EventArgs e)
{
gridview1.PageIndex = gridview1.PageCount;
btnlast.Enabled = false;
btnfirst.Enabled = true;
Bind();
}
protected void btnfirst_Click(object sender, EventArgs e)
{
gridview1.PageIndex = 0;
btnfirst.Enabled = false;
btnprevious.Enabled = false;
btnlast.Enabled = true;
btnnext.Enabled = true;
Bind();
}
}
Prabhu RajaPosted Oct 21, 2011, 6:02 AM
AshwiniPosted Oct 21, 2011, 5:58 AM
I have referred your code same thing i have done but still all the 4 button controls are not working, please help me to solve this problem.
Prabhu RajaPosted Oct 21, 2011, 1:41 AM
I am Sorry Again, i forget to tell one thing. Make Sure your Gridview Property AllowPaging Set to True.
Prabhu RajaPosted Oct 21, 2011, 1:35 AM
protected void btnnext_Click(object sender, EventArgs e)
{
int i = gridview1.PageIndex + 1;
if (i <= gridview1.PageCount)
{
gridview1.PageIndex = i;
btnlast.Enabled = true;
btnprevious.Enabled = true;
btnfirst.Enabled = true;
Bind();
}
if (gridview1.PageCount - 1 == gridview1.PageIndex)
{
btnnext.Enabled = false;
btnlast.Enabled = false;
}
}
protected void btnprevious_Click(object sender, EventArgs e)
{
int i = gridview1.PageCount;
if (gridview1.PageIndex > 0)
{
gridview1.PageIndex = gridview1.PageIndex - 1;
btnlast.Enabled = true;
Bind();
}
if (gridview1.PageIndex == 0)
{
btnfirst.Enabled = false;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex + 1)
{
btnnext.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnprevious.Enabled = false;
}
}
protected void btnlast_Click(object sender, EventArgs e)
{
gridview1.PageIndex = gridview1.PageCount;
btnlast.Enabled = false;
btnfirst.Enabled = true;
Bind();
}
protected void btnfirst_Click(object sender, EventArgs e)
{
gridview1.PageIndex = 0;
btnfirst.Enabled = false;
btnprevious.Enabled = false;
btnlast.Enabled = true;
btnnext.Enabled = true;
Bind();
}
}
Prabhu RajaPosted Oct 21, 2011, 1:30 AM
TulasiPosted Oct 21, 2011, 1:22 AM
Download the attachment
in that just change Pagesize of gridview ,
Please mark the answer as Accepted if it helps you.
AshwiniPosted Oct 21, 2011, 12:22 AM
I used datatable and binding to gridview, data is displaying in gridview. But the problem is after clicking next, previous, last and first buttons are not working. If i click on next button also it is showing first page only. please help me.
Prabhu RajaPosted Oct 20, 2011, 4:28 AM
Prabhu RajaPosted Oct 20, 2011, 4:26 AM
AshwiniPosted Oct 20, 2011, 4:24 AM
It's showing error like "The data source does not support server-side data paging." How to solve this error,please help me regarding this
Prabhu RajaPosted Oct 20, 2011, 4:21 AM
I am really sorry for my careless Here. Datareader doesn't support Paging in GridView. You may try with DataTable as
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
public partial class nextpev : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
btnfirst.Enabled = false;
btnprevious.Enabled = false;
Bind();
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
if (this.GridView1.PageCount <= e.NewPageIndex)
this.GridView1.PageIndex = 0;
else
this.GridView1.PageIndex = e.NewPageIndex;
bind();
}
public void Bind()
{
SqlConnection con = new SqlConnection("Data Source=hobvision03;Initial Catalog=master;user id=sa;password=hobvision");
con.Open();
using(SqlDataAdapter a = new SqlDataAdapter("select * from sheet1$", con))
gridview1.DataBind();
}
protected void btnnext_Click(object sender, EventArgs e)
{
int i = gridview1.PageIndex + 1;
if (i <= gridview1.PageCount)
{
gridview1.PageIndex = i;
btnlast.Enabled = true;
btnprevious.Enabled = true;
btnfirst.Enabled = true;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex)
{
btnnext.Enabled = false;
btnlast.Enabled = false;
}
}
protected void btnprevious_Click(object sender, EventArgs e)
{
int i = gridview1.PageCount;
if (gridview1.PageIndex > 0)
{
gridview1.PageIndex = gridview1.PageIndex - 1;
btnlast.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnfirst.Enabled = false;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex + 1)
{
btnnext.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnprevious.Enabled = false;
}
}
protected void btnlast_Click(object sender, EventArgs e)
{
gridview1.PageIndex = gridview1.PageCount;
btnlast.Enabled = false;
btnfirst.Enabled = true;
}
protected void btnfirst_Click(object sender, EventArgs e)
{
gridview1.PageIndex = 0;
btnfirst.Enabled = false;
btnprevious.Enabled = false;
btnlast.Enabled = true;
btnnext.Enabled = true;
}
}
Prabhu RajaPosted Oct 20, 2011, 4:10 AM
Try this one.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
public partial class nextpev : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
btnfirst.Enabled = false;
btnprevious.Enabled = false;
Bind();
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
if (this.GridView1.PageCount <= e.NewPageIndex)
this.GridView1.PageIndex = 0;
else
this.GridView1.PageIndex = e.NewPageIndex;
bind();
}
public void Bind()
{
SqlConnection con = new SqlConnection("Data Source=hobvision03;Initial Catalog=master;user id=sa;password=hobvision");
con.Open();
SqlCommand cmd = new SqlCommand("select * from sheet1$", con);
SqlDataReader reader = cmd.ExecuteReader();
gridview1.DataSource = reader;
gridview1.DataBind();
}
protected void btnnext_Click(object sender, EventArgs e)
{
int i = gridview1.PageIndex + 1;
if (i <= gridview1.PageCount)
{
gridview1.PageIndex = i;
btnlast.Enabled = true;
btnprevious.Enabled = true;
btnfirst.Enabled = true;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex)
{
btnnext.Enabled = false;
btnlast.Enabled = false;
}
}
protected void btnprevious_Click(object sender, EventArgs e)
{
int i = gridview1.PageCount;
if (gridview1.PageIndex > 0)
{
gridview1.PageIndex = gridview1.PageIndex - 1;
btnlast.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnfirst.Enabled = false;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex + 1)
{
btnnext.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnprevious.Enabled = false;
}
}
protected void btnlast_Click(object sender, EventArgs e)
{
gridview1.PageIndex = gridview1.PageCount;
btnlast.Enabled = false;
btnfirst.Enabled = true;
}
protected void btnfirst_Click(object sender, EventArgs e)
{
gridview1.PageIndex = 0;
btnfirst.Enabled = false;
btnprevious.Enabled = false;
btnlast.Enabled = true;
btnnext.Enabled = true;
}
}
AshwiniPosted Oct 20, 2011, 3:53 AM
i have sent my code what i have tried please refer it, here i have used 4 text boxes like First,Last,Previous and next. its giving error like "The data source does not support server-side data paging.". please give me some idea to solve the problem. my code is as shown below
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
public partial class nextpev : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
btnfirst.Enabled = false;
btnprevious.Enabled = false;
SqlConnection con = new SqlConnection("Data Source=hobvision03;Initial Catalog=master;user id=sa;password=hobvision");
con.Open();
SqlCommand cmd = new SqlCommand("select * from sheet1$", con);
SqlDataReader reader = cmd.ExecuteReader();
gridview1.DataSource = reader;
gridview1.DataBind();
}
protected void btnnext_Click(object sender, EventArgs e)
{
int i = gridview1.PageIndex + 1;
if (i <= gridview1.PageCount)
{
gridview1.PageIndex = i;
btnlast.Enabled = true;
btnprevious.Enabled = true;
btnfirst.Enabled = true;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex)
{
btnnext.Enabled = false;
btnlast.Enabled = false;
}
}
protected void btnprevious_Click(object sender, EventArgs e)
{
int i = gridview1.PageCount;
if (gridview1.PageIndex > 0)
{
gridview1.PageIndex = gridview1.PageIndex - 1;
btnlast.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnfirst.Enabled = false;
}
if (gridview1.PageCount - 1 == gridview1.PageIndex + 1)
{
btnnext.Enabled = true;
}
if (gridview1.PageIndex == 0)
{
btnprevious.Enabled = false;
}
}
protected void btnlast_Click(object sender, EventArgs e)
{
gridview1.PageIndex = gridview1.PageCount;
btnlast.Enabled = false;
btnfirst.Enabled = true;
}
protected void btnfirst_Click(object sender, EventArgs e)
{
gridview1.PageIndex = 0;
btnfirst.Enabled = false;
btnprevious.Enabled = false;
btnlast.Enabled = true;
btnnext.Enabled = true;
}
}
Prabhu RajaPosted Oct 19, 2011, 8:44 AM
Also try this one. you can use Page Size Property of GridView to set Default rows to 25.
And you should handle PageIndexChanging() Event , the Standard way handling PageIndexChanging() Event is,
NarayanPosted Oct 19, 2011, 3:17 AM
2. Change pager setting mode to
3. Regiser page indexchanging event handler
gv.PageIndexChanging += new GridViewPageEventHandler(gv_PageIndexChanging);
void gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gv.PageIndex = e.NewPageIndex;
//Bind the grid view
}