GridView Paging
-
Hi, I have a grid which is bound to data coming from a service at runtime. The issue is every time i select next page number the page goes blank. My code is as follows: for grid in aspx
<div>
<asp:Label ID="Label1" runat="server" Text="Searching....." Font-Bold = "true"></asp:Label>
<asp:GridView ID="grid1" runat="server" OnPageIndexChanging= "grid1_PageIndexChanged"
AutoGenerateColumns="False" Enabled ="false" AllowPaging="True" PageSize="5">
<Columns>
<asp:BoundField DataField = "Name"/>
<asp:BoundField DataField = "ID"/>
</Columns></asp:GridView></div>
the codebehind(.cs) is typically is as follows:
on pageload:
grid1.Enabled = true;
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("ID");
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
grid1.DataSource = dt;
grid1.DataBind();protected void grid1_PageIndexChanged(Object sender, GridViewPageEventArgs e)
{grid1.PageIndex = e.NewPageIndex; grid1.DataBind(); }
what am i missing here
-
Hi, I have a grid which is bound to data coming from a service at runtime. The issue is every time i select next page number the page goes blank. My code is as follows: for grid in aspx
<div>
<asp:Label ID="Label1" runat="server" Text="Searching....." Font-Bold = "true"></asp:Label>
<asp:GridView ID="grid1" runat="server" OnPageIndexChanging= "grid1_PageIndexChanged"
AutoGenerateColumns="False" Enabled ="false" AllowPaging="True" PageSize="5">
<Columns>
<asp:BoundField DataField = "Name"/>
<asp:BoundField DataField = "ID"/>
</Columns></asp:GridView></div>
the codebehind(.cs) is typically is as follows:
on pageload:
grid1.Enabled = true;
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("ID");
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
grid1.DataSource = dt;
grid1.DataBind();protected void grid1_PageIndexChanged(Object sender, GridViewPageEventArgs e)
{grid1.PageIndex = e.NewPageIndex; grid1.DataBind(); }
what am i missing here
-
I think you need to include your
Page_Load
code insideIf( ! PostBack ) { }
block. Please try this.♫ 99 little bugs in the code, 99 bugs in the code We fix a bug, compile it again 101 little bugs in the code ♫
yes my code is inside if (!IsPostBack) block.. but evrytime i click say page 2 the screen goes blank.
-
Hi, I have a grid which is bound to data coming from a service at runtime. The issue is every time i select next page number the page goes blank. My code is as follows: for grid in aspx
<div>
<asp:Label ID="Label1" runat="server" Text="Searching....." Font-Bold = "true"></asp:Label>
<asp:GridView ID="grid1" runat="server" OnPageIndexChanging= "grid1_PageIndexChanged"
AutoGenerateColumns="False" Enabled ="false" AllowPaging="True" PageSize="5">
<Columns>
<asp:BoundField DataField = "Name"/>
<asp:BoundField DataField = "ID"/>
</Columns></asp:GridView></div>
the codebehind(.cs) is typically is as follows:
on pageload:
grid1.Enabled = true;
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("ID");
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
grid1.DataSource = dt;
grid1.DataBind();protected void grid1_PageIndexChanged(Object sender, GridViewPageEventArgs e)
{grid1.PageIndex = e.NewPageIndex; grid1.DataBind(); }
what am i missing here
-
I can't reproduce this behaviour. When paging through the Grid the screen doesn't go blank. Im using VS 2010. Maybe it has something to do with the data source you've bound to the control?
my datasource is a list of objects returned from the service. Since I need to format it before displaying I convert it into a datatable and this datatable is datasource to the grid. I have stepped thru and found that datatable has populated fine with all the values. even the page comes up fine with all the data and 123 page links down. it's when i click page 2/3 link in pager that it goes blank. am using vs 2008 .net 3.5
-
my datasource is a list of objects returned from the service. Since I need to format it before displaying I convert it into a datatable and this datatable is datasource to the grid. I have stepped thru and found that datatable has populated fine with all the values. even the page comes up fine with all the data and 123 page links down. it's when i click page 2/3 link in pager that it goes blank. am using vs 2008 .net 3.5
-
You should probably separate all the three subroutines. Have the !(PagePostback), datagrid itself, and the Grid1_PageIndexChanging all separate and not in one sub.
my page load checks if it's not postback it calls the gridview load which does what i've posted and i have seperate event handler.
-
my page load checks if it's not postback it calls the gridview load which does what i've posted and i have seperate event handler.
-
I had the same issue. I had to literally re-bind the entire datagrid for it to work. It worked for me, and was working under time cruch, I stuck with it.
what do u mean by rebind, rewrite the code?
-
Hi, I have a grid which is bound to data coming from a service at runtime. The issue is every time i select next page number the page goes blank. My code is as follows: for grid in aspx
<div>
<asp:Label ID="Label1" runat="server" Text="Searching....." Font-Bold = "true"></asp:Label>
<asp:GridView ID="grid1" runat="server" OnPageIndexChanging= "grid1_PageIndexChanged"
AutoGenerateColumns="False" Enabled ="false" AllowPaging="True" PageSize="5">
<Columns>
<asp:BoundField DataField = "Name"/>
<asp:BoundField DataField = "ID"/>
</Columns></asp:GridView></div>
the codebehind(.cs) is typically is as follows:
on pageload:
grid1.Enabled = true;
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("ID");
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
dt.Rows.Add("Jack", 1);
dt.Rows.Add("Jill", 2);
grid1.DataSource = dt;
grid1.DataBind();protected void grid1_PageIndexChanged(Object sender, GridViewPageEventArgs e)
{grid1.PageIndex = e.NewPageIndex; grid1.DataBind(); }
what am i missing here
copy this aspx.cs page using System; using System.Data; using System.Configuration; using System.Collections; 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; public partial class test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BIndgrid(); } } void BIndgrid() { grid1.Enabled = true; DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("ID"); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); grid1.DataSource = dt; grid1.DataBind(); } protected void grid1_PageIndexChanged(Object sender, GridViewPageEventArgs e) { grid1.PageIndex = e.NewPageIndex; grid1.DataBind(); BIndgrid(); } }
-
copy this aspx.cs page using System; using System.Data; using System.Configuration; using System.Collections; 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; public partial class test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BIndgrid(); } } void BIndgrid() { grid1.Enabled = true; DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("ID"); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); dt.Rows.Add("Jack", 1); dt.Rows.Add("Jill", 2); grid1.DataSource = dt; grid1.DataBind(); } protected void grid1_PageIndexChanged(Object sender, GridViewPageEventArgs e) { grid1.PageIndex = e.NewPageIndex; grid1.DataBind(); BIndgrid(); } }
Super. Thanks Sneha Bisht
-
my page load checks if it's not postback it calls the gridview load which does what i've posted and i have seperate event handler.
Hi , Your Page_Load checks if it is not a postback right ? This means your code sets the DataSource property of your grid ONLY once and that is when the page loads for the first time. Please write the code "grid.DataSource = dataTable;" just before the code "grid.DataBind()" and let me know if it works. Always make it a habit to set the DataSource of a grid just before calling the DataBind() method on the grid. E.g. I would always code method like "BindPersonsData()" in my application which would be like - private void BindPersonsData() { grdPersons.DataSource = GetPersons(); grdPersons.DataBind(); } private DataTable GetPersons() { DataTable dt = new DataTable(); //logic to get data return dt; }
------------- Ankur - The Tech Anky Think Simple, Code Simple, Do Big