‫Paging بدون DataSource

بیشتر کارهای کنترل‌های ASP.NET را هم می‌توان به صورت Declartive و هم در Codebehind انجام داد. یکی از این کارها عملیات Paging در GridView است. متاسفانه یک محدودیت ظریف در حالت غیر Declarative وجود دارد که کار را برای کسانی که همه کارهای کنترل‌هایشان را در Codebehind انجام می‌دهند سخت کرده است.

اگر 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 هم توضیح داده شده است. برای کسب اطلاع بیشتر می‌توانید به این لینک و این لینک هم مراجعه کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *