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