‫Custom Paging بهینه و غیر Declarative در DataGrid

اگر بخواهید از الگوی MVP در برنامه‌های ASP.NET استفاده کنید بایستی بتوانید همه چیز را به CodeBehind انتقال دهید. این یعنی declarative و binding تقریباً تعطیل. یکی از امکانات مهمی که این وسط از دست می‌رود، امکان Paging بهینه کنترل GridView از طریق CodeBeind است. منظور از Paging بهینه فقط نمایش pager در قسمت پایین کنترل نیست، بلکه منظور این است که فقط رکوردهای مورد نیاز برای صفحه جاری (معمولاً ۱۰ تا ۲۰ تا) از دیتابیس فراخوانی شود. کنترل GridView از طریق DataSourceهای موجود در markup مثل ObjectDataSource یا SqlDataSource می‌تواند Paging بهینه را ارائه دهد. اما از طریق CodeBehind، یعنی handle کردن دستی event مربوط به Paging فقط یک Paging غیر بهینه ارائه می‌دهد. چون در CodeBehind راهی برای اعلام تعداد رکوردها به GridView وجود ندارد (+).

می‌شود به جای GridView از کنترل DataGrid استفاده کرد. DataGrid امکان Paging بهینه از داخل Code Behind را به خوبی پشتیبانی کرده و می‌توان آن را با استفاده از الگوی MVP به کار گرفت. برای این کار کافیست از eventهای SortCommand و PageIndexChanged و پراپرتی‌های VirtualItemCount و CurrentPageIndex استفاده نمایید. لطفاً نمونه زیر را ببینید.