و اما UpdateProgress Control .
همونطور که در پست قبل گفتم ممکنه فرآیند پاسخگویی به کاربر مدتی زمان ببره و چون صفحه هم Refresh نمیشه یه جوری باید به کاربر فهموند که درخواستش در حال پردازشه و باید منتظر بمونه در غیر اینصورت کاربر فکر میکنه انجام نشده و ممکنه چندین بار روی Button کلیک کنه که باعث بروز خطا میشه ! برای فهم بهتر با یه مثال عملکرد UpdateProgress رو بررسی میکنیم .
یه پروژه ی جدید از نوع AJAX-Enabled Web Site ایجاد کنید یه UpdatePanel تو فرم بذارید و یه Label و یه Button توی UpdatePanel . در رویداد Page_Load کد زیر رو بنویسید :
Label1.Text=DateTime.Now();
برنامه رو اجرا کنید Time جاری در Label نمایش داده میشه و اگه روی Button کلیک کنید Time آپدیت میشه بدون Refresh صفحه ! با کلیک روی button رویداد Page_Load فراخوانی میشه و چون button در UpdatePanel هست postback ای نداریم . خوب تا اینجا دقیقا مثه مثال قبلی بود .
اما مطلب جدید اینکه چون ما برنامه مون روی localhost اجرا میشه سرعت بسیار بالاست برای شبیه سازی محیط localhost به محیط سرور اصلی (یعنی زمانی که سایت رو رو هاست Upload میکنیم) از یه خط کد استفاده میکنیم تا کاربرد UpdateProgress رو بتونیم دریابیم . این خط کد اینه :
System.Threading.Thread.Sleep(3000);
این خط رو در رویداد Page_Load اضافه کنید یعنی Page_Load بشه این :
System.Threading.Thread.Sleep(3000);
Label1.Text=DateTime.Now();
این خط کد یه delay یا تاخیر در اجرای کد ایجاد میکنه که مقدارش برابر با همون عددی هست که داخل پرانتز بهش پاس شده و این مقدار به میلی ثانیه هست یعنی الان 3 ثانیه تاخیر ایجاد میکنه حالا طبیعتا اگه بجای 3000 نوشته بودیم 5000 ، 5 ثانیه تاخیر داشتیم !
اگه برنامه رو دوباره اجرا کنید و روی button کلیک کنید بعد از 3 ثانیه Time آپدیت میشه ! بعبارت دیگه هروقت روی button کلیک کنی بعد 3 ثانیه time آپدیت میشه .
علت استفاده ازون کد فقط شبیه سازی محیط localhost با server هست وگرنه وقتی سایت رو آپلود کردید اون خط رو باید پاک کنید . چون رو سرور به اندازه کافی تاخیر هست مخصوصا اگه در باتن یه ارتباط با دیتابیس برقرار کرده باشید و مثلا یه select ساده نوشته باشین .
حالا میخوایم کاری کنیم که در طول این مدت یعنی 3 ثانیه بنویسه که Please Wait و یه شکل گرافیکی مثه سایت برنامه نویس (همین که یه گردالی میچرخه! :چشمک:) رو نشون بده .
یه کنترل UpdateProgress از toolbox روی فرم قرار بدید و یه متنی رو مثه "لطفا منتظر بمانید..." توش تایپ کنید و بعد پروژه رو run کنید وقتی روی باتن کلیک کنید اون متن به مدت 3 ثانیه نمایش داده میشه و بعد time آپدیت میشه . علاوه بر متن یه فایل gif (در ضمیمه هست) هم میتونید قرار بدید . فقط دقت کنید در حالتی که سایت رو آپلود میکنید دیگه نیازی به کد Threading نیست و متن UpdateProgress بصورت اتوماتیک تا زمانی که جواب از سرور بیاد نمایش داده میشه و بعد ازون دیگه نمایش داده نمیشه .
در ادامه به کنترل های Ajax Toolkit خواهیم پرداخت ...