نسخه ی سوم برنامه آماده شد.
تغییرات در این نسخه شامل افزودن قابلیت Paging و امکان ایجاد خروجی از داده ها با فرمت Excel است.
قابلیت Paging
فعال کردن قابلیت Paging برای GridView با تنظیم خاصیت AllowPaging آن به true میسر خواهد بود.
اما در این حالت، با درخواست هر صفحه، تمامی رکوردها بازیابی خواهند شد و نسبت به صفحه ی درخواستی، رکوردهای مرتبط با آن صفحه نمایش داده می شوند.
مسلما این حالت در زمانی که تعداد رکوردها زیاد باشد، باعث افت قابل ملاحظه ی سرعت و ایجاد سربار بر روی سرور می شود.
راهی که بدین منظور پیشنهاد شده، استفاده از SP است. بدین صورت که از طریق SP، یک جدول موقت در حافظه ایجاد می کنند و از طریق عملیاتی، داده های مورد نظر را استخراج می کنند.
این SP یک SP ثابت در کلیات و متغیر در جزئیات است که برنامه نویس نسبت به نیاز خود می تواند برخی قسمت های آن را تغییر دهد.
از این SP در CS CMS نیز استفاده شده.
در این برنامه نیز این SP با نام spBindGridView وجود دارد.
روالی با نام Fill_Paging_DropDown در برنامه تعریف شده که با دریافت تعداد رکوردها، با تقسیم تعداد رکوردها بر تعداد رکوردهایی که در هر صفحه قصد نمایش آنها را داریم (در این برنامه، تعداد نمایش رکوردها در هر صفحه، 5 رکورد در نظر گرفته شده)، تعداد صفحات را به دست می آورد و با یک حلقه ی For، از 1 تا تعداد صفحات به دست آمده را به یک DropDownList اضافه می کند.
در این حالت، کاربر می تواند با انتخاب شماره ی صفحه، به صفحه ی مورد نظر برود.
توجه داشته باشید که SP یاد شده، یک SP از نوع Batch Query است که در اولین Recordset خود تعداد رکوردها و در دومین Recordset خود، رکوردهای بازیابی شده را نگهداری می کند.
در این برنامه، داده های بازیابی شده در یک DataReader قرار می گیرند. در DataReader این امکان به برنامه نویس داده شده تا با استفاده از متد NextResult، به Recordset بعدی برود.
قابلیت ایجاد خروجی از داده ها با فرمت اکسل
در برنامه های کاربردی، معمولا ایجاد خروجی از داده ها با فرمت های مختلف، یکی از اعمال متداولی است که انجام می پذیرد.
یکی از خروجی های محبوب، فرمت اکسل است.
ابزارها و کامپوننت های مختلفی بدین منظور ایجاد شده اند اما یک روش قدرتمند، کارامد و ساده وجود دارد که اکثرا برنامه نویسان از آن غافل هستند!
مجموعه ی Office قابلیت ایجاد تعامل با زبان HTML را به خوبی فراهم کرده.
برنامه هایی همانند Word و Excel، این امکان را به کاربر می دهند تا فایل های خود را در این برنامه ها با قالب HTML ذخیره کرده و مجددا در این برنامه ها فراخوانی کند! (قابل توجه دوستانی که با ایجاد تعامل با فایل های Word در برنامه های خود مشکل دارند)
اگر اندکی در جزئیات کار ریز شوید، انعظاف پذیری فوق العاده ای را در تعامل این برنامه ها با HTML خواهید دید!
به شکل ساده، یک سَنَد Excel ایجاد کرده و پس از پُر کردن چند سلول از آن، از منوی File، گزینه ی Save as Web Page را انتخاب کنید.
پس از ذخیره ی سند، آن را در Notepad یا هر ویرایشگر متنی دیگر باز کنید.
فایل Excel خود را با قالب HTML خواهید دید! حتی می توانید این فایل را در Excel باز کرده و همانند یک فایل Excel واقعی با ان کار کنید!
جالب بود... ما نیز از همین قابلیت برای ایجاد خروجی داده ها با فرمت Excel بهره می بریم.
ساختار HTML توسط ما و از طریق کدنویسی در زمان اجرا ایجاد خواهد شد.
متغیر رشته ای strResult که در روال ExportToExcel تعریف شده در ابتدای کار مقدار زیر را می پذیرد:
strResult = "<html><head><meta http-equiv=Content-Type content=""text/html; charset=windows-1256""><style> .text { mso-number-format:\@; } .xl24 {font-family:Tahoma, sans-serif; mso-font-charset:0;}</style></head><table><tbody>"
پیشنهاد می کنم که charset صفحه و برخی قالب های تعریف شده در تگ style رو بنا به تجربه، همانند مقادیر بالا در نظر بگیرید.
با یک حلقه ی Do While، رکوردهای بازیابی شده را از طریق DataReader استخراج و ساختار HTML را نیز همگام با بازیابی داده ها ایجاد می کنیم. (هر فیلد در یک تگ TD و هر رکورد در یک تگ TR)
پس از پایان کار، نوع محتویات خروجی صفحه را با استفاده از خاصیت ContentType کلاس Response به مقدار ثابت ";application/vnd.xls" تنظیم می کنیم. این کار، به مرورگر خواهد گفت که نوع داده های خروجی از نوع MIME-TYPE اکسل است. در نهایت، با متد Write کلاس Response، داده ها را به مرورگر کاربر ارسال می کنیم.
نکته مهم:
پس از پایان کار و مشاهده ی فایل ایجاد شده در Excel، متوجه شدم که حرف "ی" در کلمات به شکل علامت سوال "؟" نمایش داده می شود!
فایل را با Notepad نگاه کردم اما حرف "ی" به درستی نمایش داده میشد!
پس مشکل از حرف "ی" نبود و مشکل را باید در اکسل جستجو می کردم.
یک فایل جدید در اکسل ایجاد کردم و عبارتی را که حاوی حرف "ی" بود در آن تایپ و صفحه را با فرمت HTML ذخیره کردم.
پس از باز کردن فایل در Notepad، متوجه نکته ی جالبی شدم!
اکسل، حرف "ی" را با کد معادل آن یعنی ";1740#&" جایگزین می کند!!!
پس به این نتیجه رسیدم که اگر حروف "ی" را در هنگام ایجاد خروجی با کد ذکر شده جایگزین کنم، مشکل برطرف خواهد شد.
حدسم صحیح بود و با این عمل جایگزینی، حرف "ی" به درستی نمایش داده میشد!
strResult = strResult.Replace("ی", ";1740#&")
البته کد فوق در اینجا به درستی نشان داده نشده!
موفق باشید.





