Groups | Blog | Home
all groups > asp.net > april 2005 >

asp.net : DataGrid Paging doesnt page!



Dee
4/17/2005 11:48:58 PM
Hi
The paging numbers of my DataGrid dont actually page. What can be the cause?
Everyting else seems to work.
Thanks
Dee

Scott M.
4/17/2005 11:50:01 PM
What code have you entered into the PageIndexChanged event handler?


[quoted text, click to view]

Scott M.
4/18/2005 12:00:00 AM
No problem. Good luck.


[quoted text, click to view]

Dee
4/18/2005 12:00:00 AM
Thanks Scott,
I dodnt know I needd to handle that event.
It workd now. I added:

DataGrid1.CurrentPageIndex = e.NewPageIndex
DataGrid1.DataBind()

It's intersting that the paging works without thr DataBind() call but have
to click on the page TWICE!


[quoted text, click to view]

Jeebu
4/18/2005 12:00:00 AM
HI
set the property of datagrid to AllowPaging=3D"True"
then
on the grid_page index changed event
write the code

grid.CurrentPageIndex =3D e.NewPageIndex ;

and then write the code for connecting to the datbase
[quoted text, click to view]
Scott M.
4/18/2005 10:19:31 AM
You must ALWAYS call the databind method after making any kind of change to
the datagrid that affects what data the grid is showing.

The reason you'd have to click the pager twice without the extra databind
call is that the grid uses ViewState to remember, not only the data that is
was showing, but also other "state" information such as what page of data
was showing, what sort order was in effect, what row was being edited or was
selected, etc.

Without the databind call, the grid is bound to its data in Page_Load
(that's where you do have a databind call, right?) and the first click sets
the page correctly but doesn't update the grid with the new page of data
because no databind call took place AFTER setting the page to show, the
second click causes the grid to bind to its data in Page_Load as well, but
now the grid is "remembering" via ViewState what page of data to display
BEFORE the databind call takes place.

In general, your page load event handler should look like this:

datagrid.datasource = someDataSource
If Not IsPostBack Then
datagrid.databind
End If

and then at the end of EACH and EVERY datagrid event handler where the data
would change in some way (sortCommand, PageIndexChanged, EditCommand,
DeleteCommand, SortCommand, CancelCommand)

datagrid.databind



[quoted text, click to view]

Dee
4/18/2005 8:34:40 PM
Wow
Great explanation! Thanks very much.
Dee

[quoted text, click to view]

AddThis Social Bookmark Button