برچسب‌های نوشته ‘custom paging’

Custom Paging در GridView به کمک LINQ

مرداد ۱۲م, ۱۳۸۸

download دریافت کد این نوشته 

LINQ چیست؟
LINQ که سرنام Language Integrated Query است یک روش جدید در دات نت برای انجام پرس و جو روی انواع داده‌هاست.
برای آشنایی بیشتر با LINQ مطالب زیر را که نوشته حامد بنایی است مطالعه کنید:
+ LINQ بخش اول
+ LINQ بخش دوم – LINQ to SQL

Custom Paging چیست؟
در دات نت وقتی بخواهیم لیستی از اطلاعات را نشان بدهید از کنترل‌هایی نظیر GridView استفاده می‌کنیم. اگر تعداد رکوردها زیاد باشد از قابلیت paging در GridView استفاده می‌شود. به کمک paging رکوردها در صفحاتی که سایزشان را مشخص می‌کنیم نمایش داده می‌شوند.

Gridview Paging

به طور پیش فرض در paging عادی تمام رکوردها از بانک اطلاعاتی دریافت می‌شوند و در هر صفحه فقط بخشی از رکوردها که مورد نیاز هستند نمایش داده می‌شوند. Custom Paging یک روش سفارشی برای انجام صفحه بندی است که در آن در هر صفحه از GridView فقط رکوردهای مربوط به همان صفحه از بانک اطلاعاتی دریافت می‌شوند.
به عنوان مثال فرض کنید ما ۱۰۰ رکورد داریم و می‌خواهیم آن‌ها را در یک GridView صفحه بندی کنیم. سایز صفحات را هم ۲۰ رکورد در نظر گرفته‌ایم، بنابراین ۵ صفحه خواهیم داشت. در روش paging‌ عادی وقتی در حال تماشای صفحه دوم هستیم (رکوردهای ۲۱ تا ۴۰) تمام ۱۰۰ رکورد از بانک اطلاعاتی دریافت می‌شود ولی فقط رکوردهای ۲۱ تا ۴۰ در GridView‌ نمایش داده می‌شوند.
در روش Custom Paging اما در صفحه دوم فقط رکوردهایی که نیاز داریم نمایش داده بشوند (رکوردهای ۲۱ تا ۴۰) از بانک اطلاعاتی دریافت می‌شوند. این یک روش بهینه است و البته کارآیی و سرعت برنامه را به خصوص در حجم اطلاعات بالا بسیار افزایش می‌دهد.

Custom Paging به کمک LINQ
قبل از هر چیز Visual Studio‌ را باز کنید و یک Web Site جدید بسازید.
ابتدا فرض می‌کنیم یک جدول در بانک اطلاعاتی به نام City‌ داریم با دو فیلد CityId از نوع int و CityName‌ از نوعnvarchar 50 . حالا یک LINQ to SQL Class به نام City می‌سازیم و جدول City را از بانک اطلاعاتی به آن اضافه می‌کنیم:

City Table

در پوشه App_Code وب سایت یک کلاس جدید به نام CityClass ایجاد می‌کنیم. در این کلاس می‌خواهیم متدهای لازم برای Custom Paging را به شرح زیر بنویسیم:

    public IQueryable BindGrid(int startRowIndex, int maximumRows)
    {
        CityDataContext db = new CityDataContext();
        var query = from c in db.Cities select c;
        return query.Skip(startRowIndex).Take(maximumRows);
    }

    public int GetCityCount()
    {
        CityDataContext db = new CityDataContext();
        return (from c in db.Cities select c).Count();
    }

حالا می‌رسیم به بخش نمایش کار. یک GridView و یک ObjectDataSource به صفحه‌مان اضافه می‌کنیم.

Enable Paging کنترل GridView را علامت بزنید و Datasource آن را ObjectDataSource1 انتخاب کنید

Gridview Config

حالا نوبت به تنظیم ObjectDataSource‌ می‌رسد. TypeName همان نام کلاسی که قبلاً ایجاد کردیم یعنی CityClass، همچنین نام دو متدی را که در CityClass نوشته بودیم به عنوان SelectCountMethod و SelectMethod اضافه می‌کنیم. فراموش نکنید که Enable Paging را هم true کنید.

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
        EnablePaging="true" SelectCountMethod="GetCityCount"
        SelectMethod="BindGrid" TypeName="CityClass" />

تمام شد! سایت را اجرا کنید و نتیجه کار را ببینید.

Vote on iDevCenter