اگر GridView را به یک DataSource مثل ObjectDataSource وصل کنید، آن DataSource از دو متود خاص برای بازیافت بهینه اطلاعات استفاده میکند. یکی متودی که برای دریافت فقط یک صفحه از اطلاعات و نه همه آنها به کار میرود و دیگری متودی برای دریافت تعداد کل رکوردها. اگر از DataSource استفاده نکنید باید event مربوط به PageIndexChanging را در codebehind مورد استفاده قرار دهید. کد این قسمت مشابه کد زیر خواهد بود:
protected void grdList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grdList.PageIndex = e.NewPageIndex;
grdList.DataSource = GetData(grdList.PageSize, e.NewPageIndex);
grdList.DataBind();
}
اما چون بدون استفاده از DataSource راهی وجود ندارد که به GridView بگوییم تعداد کل رکوردها چندتاست، پس مکانیزم Pager کار نخواهد کرد. این همان محدودیت ظریف است که در مکانیزم Paging مربوط به GridView وجود دارد. این محدودیت در این لینک MSDN هم توضیح داده شده است. برای کسب اطلاع بیشتر میتوانید به این لینک و این لینک هم مراجعه کنید.