PDA

View Full Version : **مقاله آموزشی **نحوه استفاده از کنترل های MS AJAX



m.hamidreza
یک شنبه 04 آذر 1386, 21:25 عصر
توجه:
کلیه ی حقوق این مقاله متعلق به سایت www.barnamenevis.org (http://www.barnamenevis.org/) است.
نقل از نوشته های این مقاله منوط به ذکر نام منبع است.
با توجه به سوالات متفاوتی که اعضای جدید سایت در مورد نحوه استفاده از کنترل های MS AJAX می پرسیدن بر آن شدم:لبخندساده: مقاله ای در مورد شیوه بکارگیری این کنترل ها در یک برنامه تحت وب بنویسم .
امیدوارم این مقاله بتونه شروع خوبی برای دوستانی باشه که می خوان از این تکنولوژی در سایت هاشون استفاده کنن و در ابتدای راه هستن ....

مقدمه :

در مورد مفاهیم اولیه AJAX یا ای جکس میتونین به این لینک (http://fa.wikipedia.org/wiki/%D8%A2%DA%98%D8%A7%DA%A9%D8%B3_%28%D8%A8%D8%B1%D9% 86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8 %B3%DB%8C%29) مراجعه کنید . فرض بر اینه که دوستان آشنایی اولیه دارن .
مایکروسافت ازون جایی که ارادت خاصی به مشتریاش داره! اومد کار رو برای برنامه نویسان ASP.NET راحت کرد و مجموعه ای رو تحت عنوان ATLAS ارائه کرد که امکان ایجاد حرکت های نمایشی AJAX ای رو در ASP.NET فراهم میکرد ! :لبخندساده:
این مجموعه توسعه یافت و تحت عنوان MS AJAX یا ASP.NET AJAX نهایی شد .
در این مجموعه کنترل هایی ارائه شده که هر کدوم کاربرد خاصی دارن و مورد استفاده در ASP.NET 2.0 هستن .
برای شروع ابتدا باید ASP.NET AJAX v1.0 رو که حدود 1.4 مگابایته از سایت مایکروسافت (http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en) دانلود و نصب کنید . پس از نصب ، کنترل های مورد نظر به ToolBox ویژوال استودیو اضافه خواهد شد . در پست های بعدی راجع به کنترل های AJAX Toolkit هم صحبت میکنیم .
در ادامه یک پروژه ایجاد و از امکانات اولیه ASP.NET AJAX در اون پروژه استفاده می کنیم . . .

m.hamidreza
سه شنبه 06 آذر 1386, 23:54 عصر
یه نکته و اون اینکه پس از نصب اون فایل یه سری dll در مسیر پیش فرض زیر بصورت اتوماتیک کپی میشن :

C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensionsچیزی که مهمه اینه اگه خواستید سایتتون رو روی هاست Upload کنید باید این dll هارو در پوشه bin پروژتون روی هاست کپی کنید .
این مساله یکی از سوالات متداول دوستان بوده که وقتی سایتشون رو آپلود می کردن با یه سری Error های جاوا اسکریپتی مواجه میشدن که این بر میگرده به در نظر نگرفتن همین نکته .(البته در بعضی از هاست ها بدون کپی کردن این dll ها هم ای جکس سایت شما به زیبایی کار خواهد کرد که این نشون دهنده ی این موضوع هست که اون فایل رو سرور نصب شده)
خوب پس از نصب ASP.NET AJAX Extensions v1.0 ویژوال استادیو رو باز کنید . از منوی فایل گزینه New Web Site رو انتخاب کنید ، در پنجره ای که باز میشه یه آیتم جدید به نام ASP.NET AJAX-Enabled Web Site اضافه شده که شما برای استفاده از کنترل های ای جکس در پروژتون باید این گزینه رو انتخاب کنید و بعد هم OK . در Toolbox عنوانی اضافه شده به نام AJAX Extensions که اگه بازش کنین لیست کنترل های ای جکسی رو می بینین ...
کنترل های UpdatePanel و UpdateProgress بیشترین استفاده رو دارن .
توی اکثر وب سایت ها دیدید که مثلا موقع ثبت نام وقتی میخواین username رو وارد می کنین یه باتن هست که availabe بودن اون username رو بررسی میکنه وقتی روش کلیک میکنین یه چیزی مثه Please Waiting سه چهار ثانیه نمایش داده میشه و بدون اینکه صفحه Refresh شه میگه این username قبلا ثبت شده و یکی دیگه وارد کن ! این عملیات توسط همین دو کنترل به سادگی انجام میشه ...
در محیط Design روی فرم یه آبجکتی به نام ScriptManager قرار داره بهش کار نداشته باشین بزارین باشه واسه خودش! برای شروع یه Label با یه Button رو فرم بذارید و در رویداد Page Load بنویسید :

Label1.Visible=false;و در Onclick باتن visibilty رو true کنید :

Label1.Visible=true;وقتی برنامه رو Run کنید label دیده نمیشه و با کلیک روی باتن و Refresh شدن صفحه label ظاهر میشه ! در واقع باتن جزء کنترل هایی هست که باعث postback صفحه میشه . خوب حالا از Toolbox کنترل UpdatePanel رو انتخاب کنید و روی فرم قرار بدید label و button رو در این UpdatePanel بندازید و برنامه رو اجرا کنید حالا اگه روی button کلیک کنید اعجاب سال 2007 رو خواهید دید ! :لبخند: بدون اینکه صفحه Refresh بشه label ظاهر میشه .

کنترل هایی که با UpdatePanel سازگار نیستن عبارتند از :

TreeView & Menu
ASP.NET Web Parts Control
FileUpload که البته راه حل داره !
GridView & DetailsView البته زمانی که ویژگی EnableSortingAndPagingCallbacks به true ست شده باشه . در حالت پیش فرض false هست .
Login,PasswordRecovery,ChangePassword,CreateUserWi zard
Substitution
Validation Controls

اگه خواستین کنترل FileUpload رو تو UpdatePanel بذارید ازین تاپیک (http://barnamenevis.org/forum/showthread.php?t=75535) می تونین استفاده کنید.
بقیه کنترل ها مشکل خاصی ندارن و قابل استفاده هستن .
همونطور که دیدید بدون refresh صفحه کدی که در رویداد Button بود اجرا شد . حالا این کد هر چیزی میتونه باشه مثه یه Query که از دیتابیس گرفته میشه و یه سری رکورد قراره برگردونه ... عملا به دلیل postback نشدن صفحه سایت شما UserFriendly تر میشه و بقول بچه ها به دل کاربر میشینه ! :لبخندساده:
در حالتی که یه label ظاهر یا مخفی میشه این کار خیلی سریع انجام میشه اما ممکنه در button شما یه پرس و جوی دیتابیسی نوشته باشی و در حالتی که سایت Upload شده و با توجه به سرعت زیبای اینترنت در وطن مثلا 5 ثانیه زمان ببره تا کد توی رویداد کلیک باتن اجرا شه ، تو این حالت معمولا یه شکل گرافیکی با یه متن مثه لطفا صبر کنید به کاربر نمایش داده میشه تا کاربر بفهمه که پردازش در حال انجامه !
این کار توسط کنترل UpdatePrgress انجام میشه که در ادامه بهش خواهیم پرداخت . . .

el_abdollahi
پنج شنبه 08 آذر 1386, 10:32 صبح
سلام
من قبلا با AJAX آشنایی نداشتم و سایتی رو که دارم روش کار میکنم از نوع وب سایت معمولی هستش ، آیا می تونم از AJAX توش استفاده کنم ؟
استفاده کردم ولی هیچ تغییری در عملکرد فرم حاصل نشد .

ClaimAlireza
پنج شنبه 08 آذر 1386, 11:31 صبح
باید به web.config یه سری چیزها رو اضافه کنین.

برای راحتی میتونین web.config یه پروژه که به صورت AjaxEnable هستش رو ببینین و قسمت های مورد نیاز رو کپی کنین توی web.config پروژه ای که قصد ajax ای کردن اونو دارین.

قسمت های مورد نظر بسیار تابلو می باشند.

el_abdollahi
پنج شنبه 08 آذر 1386, 12:41 عصر
سلام .
با تشکر . الان سایتم با AJAX سازگار شده و صفحاتم رو بدون post back اجرا میکنه .
فقط ببخشید اینقدر سوال میپرسم ولی توی صفحاتم از دستور زیر استفاده میکنم که موقع اجرا یه alert بهم میده و اجرا نمیشه :


Response.Write("<script language='javascript' type='text/javascript' > window.open('Brief.aspx','_blank')</script>")

el_abdollahi
پنج شنبه 08 آذر 1386, 13:46 عصر
این هم از error

mahdi_farhani
پنج شنبه 08 آذر 1386, 14:58 عصر
کلاً Ajax با Response.write مشکل داره ، و همچنین با ClientScript هم درست جواب نمیده برای حل این مشکل شما باید Scriptmanager استفاده کنی .
میتونی این تاپیک هم یه نگاهی بندازی
http://barnamenevis.org/forum/showthread.php?t=83085

m.hamidreza
جمعه 09 آذر 1386, 16:54 عصر
و اما 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 خواهیم پرداخت ...

merlin_vista
جمعه 09 آذر 1386, 21:28 عصر
برای ساخت تصاویر زیباتر لودینگ برای UpdateProgress میتوانید از سایت زیر استفاده کنید :

http://www.ajaxload.info (http://www.ajaxload.info/)

Behrouz_Rad
شنبه 10 آذر 1386, 10:40 صبح
دوستمون این تاپیک رو به عنوان یک مقاله ی آموزشی ایجاد کردند!
چرا بحث تاپیک رو تغییر میدید؟
اگر سوالی دارید، تاپیکی ایجاد کنید و سوالتون رو در اون تاپیک بپرسید.
لطفا از Reply به این تاپیک خودداری بفرمایید.

متشکرم.

m.hamidreza
دوشنبه 12 آذر 1386, 14:43 عصر
AJAX Control Toolkit
============
خوب در این پست شیوه نصب AJAX Control Toolkit رو بررسی میکنیم .
همون طور که در پست های قبلی گفته شد کنترل های Toolkit کنترل هایی هستن که هر کدوم به منظوری خاص ایجاد شدن و در واقع یه سری کنترل برای سفارشی کردن وب سایت شماست . یه نگاه به این کنترل ها بندازید تا التفات کامل حاصل شود ، در لیست سمت چپ کنترل ها رو انتخاب کنید یه نمونه میبینید که میتونید تستش کنید :
AJAX CONTROL TOOLKIT SAMPLES (http://asp.net/AJAX/AjaxControlToolkit/Samples/)

برای این که بتونید از این کنترل در وب سایتتون استفاده کنید این مراحل رو باید انجام بدید :
از اینجا (http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513) فایل AjaxControlToolkit.zip رو دانلود کنید بعد Unzip شدشو تو مسیر زیر کپی کنید :


C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions
تو اون پوشه ای که کپی کردید تو پوشه AjaxControlExtender یه فایل هست با پسوند VSI. این فایل رو اجرا کنید . بعد ویژوال استادیو رو باز کرد و یه وب سایت جدید NEW کنید در پنجره ی NEW یه گزینه ای به نام AJAX Control Toolkit Website اضافه شده ، اونو انتخاب کنید و پروژه رو ایجاد کنید .
سپس توی Toolbox کلیک راست کنید Add a Tab رو انتخاب کنید . توی Tab بنویسد مثلا AJAX Control Toolkit . حالا در همون قسمت کلیک راست کنید choose item رو انتخاب کنید ، بعد دکمه Browse رو بزنید تو پوشه ای که در درایو C کپی کردین یه dll به نام AjaxControlToolkit هست اونو انتخاب کنید و ....
در اون قسمت این کنترل ها تو Toolbox اضافه میشن که مثه سایر کنترل ها با یه drag-drop رو فرم قرار میگیرن و قابل استفاده هستن .
دیگه نحوه استفاده از این کنترل ها با توجه به وسعت بسیار اینترنت و sample های موجود در این زمینه کار خیلی سختی نیست !
لینک video های Ajax :
http://asp.net/ajax/documentation/


پــــــــــــــــــــــــ ــــا یـــــــــــــــــــــــا ن


امیدوارم این تاپیک مفید بوده باشه و مورد استفاده دوستان قرار گرفته باشه ! کمی کاستی چیزی هم اگه داشت دیگه به بزرگواری خودتون ببخشید ! :چشمک:

merlin_vista
جمعه 16 آذر 1386, 08:50 صبح
آقا من از کنترل MaskedEditExtender در Toolkit استفاده کردم برای اعداد ولی میخواهم تا هر رقمی را که وارد کرد 3 رقم 3 رقم بشه نه یه عدد محدود باید چکار کنم ؟

mahdi_farhani
جمعه 16 آذر 1386, 09:02 صبح
شما از تابع تاوا اسکریپت استفاده کن و سه رقم را جدا کن و همچنین از FilteredTextbox استفاده کن تا چیزی به غیر از عدد وارد نکنه .. ولی اینطوری که شما میگید تا حالا امتحان نکردم .

mahdi_negahi
جمعه 16 آذر 1386, 10:42 صبح
شما از تابع تاوا اسکریپت استفاده کن و سه رقم را جدا کن و همچنین از FilteredTextbox استفاده کن تا چیزی به غیر از عدد وارد نکنه .. ولی اینطوری که شما میگید تا حالا امتحان نکردم .
اگر این کارو بکنی FilteredTextbox نمیگذاره اون کاراکتری که برای جدا کردن 3 رقم است را وارد شه و نمایش داده شود

در الان این بخش یک سایت آمده است که نویسنده محترم یک فایل جاوا اسکریپت دارد که همه آن کارهارو میکند
در استفاده از AgaxToolkit و MS Ajax تا به حال توجه به حجم صفحات کردید ؟

mahdi_farhani
جمعه 16 آذر 1386, 11:15 صبح
اگر این کارو بکنی FilteredTextbox نمیگذاره اون کاراکتری که برای جدا کردن 3 رقم است را وارد شه و نمایش داده شود

چرا میزاره ، اگر رو حالت Custom بزارید و ValidChar را خودتون تنظیم کنید ، میتونید اینکارو بکنید ،

استفاده از AgaxToolkit و MS Ajax تا به حال توجه به حجم صفحات کردید ؟
دقیقاً حجم صفحات خیلی زیاد میشه ، ولی با اون پستی که خدتون داخل تاپیک کمپرسر کردن دادید مشکل حجم هم حل میشه و فوق العاده میشه .

karimi84
شنبه 17 آذر 1386, 15:59 عصر
من برنامه تا الان بدون ajax نوشتم ایا صفحات بعدی را می توانم با ajax کار کنم؟
البته وقتی که صفحه جدید می خواهم اضافه کنم ASP.NET AJAX Extensions v1.0 وجود ندارد
(تمامی مراحلی که گفتیند در یک پروژه دیگر انجام دادم و جواب گرفتم
) با تشکر

m.hamidreza
شنبه 17 آذر 1386, 19:41 عصر
من برنامه تا الان بدون ajax نوشتم ایا صفحات بعدی را می توانم با ajax کار کنم؟

بله ! پست 3 و 4 همین تاپیک رو یه نگاه بکن ... جواب سوال شماست .

merlin_vista
چهارشنبه 21 آذر 1386, 11:43 صبح
در ادامه فعالیت دوست عزیز m.hamidreza
توضیح بعضی از ابزار کامپونت های AjaxControlToolkit قسمت اول
ConfirmButton Demonstration
از این مکامپنت مجود در AjaxControlToolkit میتوانید برای پرسیدن سوال در هنگام پست بک ها توسط دکمه استفاده کنید !!
اگر میخواهید درگیر کدهای جاوا نشوید برای این گونه پیغام ها این کامپونت پیشنهاد میشود ؟
برای آزمایش یک TextBox بر روی صفحه بیارید + یک عدد دکمه و از کامپونت ها AjaxControlToolkit هم نیز کامپونت ConfirmButton را نیز بیارید .
سپس در روال Click دکمه کد زیر را بنویسید

this.TextBox1.Text=DateTime.Now.ToShortDateString( ).ToString();
حال نوت به نتظیم ConfirmButton رسیدا است !! کد مربوط به ConfirmButton را در قسمت ASP پیدا کنید و تنظیمات زیر را به دلخواه انجام دهید :

<ajaxToolkit:ConfirmButtonExtender ID="cbe" runat="server" TargetControlID="LinkButton1" ConfirmText="Are you sure you want to click this?" OnClientCancel="CancelClick" />
TargetControlID = نام دکمه را برای کنترل بنویسید !
ConfirmText = متن سوال را در این قسمت وارد کنید (توجه داشته باشید که استفاده از کدهای HTML در این قسمت مجاز است ) به عنوان مثال : (ex: " " for new-line)
OnClientCancel = اگر میخواهید رویداد خاصی در هنگام کلیک کاربر بر روی Cancel اتفاق بیفتد از این قسمت استفاده کنید .
DisplayModalPopupID = اگر میخواهید پیغام را خودتان طراحی کنید . مثلاً در یک Panel از این قسمت استفاده کنید و نام Panel را وارد کنید !

m.hamidreza
چهارشنبه 21 آذر 1386, 12:36 عصر
@merlin_vista
:لبخندساده: دستت درد نکنه برادر ! فقط من خودم دارم راجع به AnimationExtender و Accordion می نویسم . شما اگه خواستی زحمت بکشی غیر این دو تا رو بنویس ... :تشویق:

fadaei2005
جمعه 12 بهمن 1386, 22:19 عصر
سلام
من در صفحه هام از tab panel ajaxtoolkit استفاه کردم حالا وقتی از کمپرسور صفحه استفاده کردم
صفحه هام زمان لود شدن قاطی میکنه و لود نمیشه.

eworkpro
شنبه 20 بهمن 1386, 23:04 عصر
و اما 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 خواهیم پرداخت ...


ببخشید یک سوال ؟!
این UpdateProgress رو چرا من پیدا نمی کنم ؟
کجاست ؟
البته من اون فایل مربوط به آجاکس رو نصب کردم.
tab ی هم به نام ajax extensions دارم ولی چنین چیزی توش نیست ؟

m.hamidreza
یک شنبه 21 بهمن 1386, 00:06 صبح
ولی چنین چیزی توش نیست ؟

UpdatePanel داری ؟! مراحل نصب احتمالا مشکل داشته ... شما اول روی سیستمت مسیر این فایل رو پیدا کن :
AJAXExtensionsToolbox.dll (اگه نبود دوباره باید نصب کنی)
اون tab رو delete کن یه tab ایجاد کن بعد توی همون tab که الان چیزی توش نیست کلیک راست کن choose item رو انتخاب کن بعد با browse مسیر اون dll رو پیدا کن و اضافه کن ببین چی میشه ...

eworkpro
یک شنبه 21 بهمن 1386, 22:18 عصر
والا من با اسکریپت منیجر و آپدیت پنلش کار می کردم ولی این اپدیت پروگرس اصلا توش وجود نداره . آدرس dll اش رو هم پیدا کردم ولی تا می یام add کنم erro می ده که نمی تونه لودش کنه !
من یکبار هم repairesh کردم ولی فایده نداشت.
حالا می شه آدرس فایلش رو اصلا بده من برم اون رو دانلود کنم ؟!

m.hamidreza
دوشنبه 22 بهمن 1386, 19:57 عصر
I donno !
ببین توی Source به تگ UpdateProgress دسترسی داری ؟! شاید اونجا بتونی تعریف کنی . یه همچین کدی رو بنویس تو source ت :



<asp:UpdateProgress ID="UpdateProgress1" runat="server" >
<ProgressTemplate>
<asp:Image ID="loading" runat="server" ImageUrl="~/Images/Loading.gif" />
Please wait . . .
</ProgressTemplate>
</asp:UpdateProgress>

eworkpro
دوشنبه 22 بهمن 1386, 22:25 عصر
خیلی جالب بود.
من این پک رو خیلی وقت پیش گرفته بودم.
حالا رفتم ورژن جدیدش رو گرفتم داخلش آپدیت پروگرس بود
ولی ورژن قبلی اصلا همچین چیزی نداشت !

fazel-d
پنج شنبه 16 خرداد 1387, 22:22 عصر
TextBoxWatermark

همون چيزي كه در بالاي صفحه سايت barnamenevis.org جهت جستجوي توي گوگل مي بينيد.
در اين كنترل به جاي قرار دادن يه ليبل قبل از اين تكس باكس مي تونيد يه برچسب در داخل اين كنترل قرار بدين . كه با كليك كردن در داخلش نوشته ها حذف و با خارج شدن كنترل از اون دوباره نوشته ها بر مي گرده. البته مي تونيد حتي عكس هم توش بذارين.

<ajaxToolkit:TextBoxWatermarkExtender ID="TBWE2" runat="server"
TargetControlID="TextBox1"
WatermarkText="Type First Name Here"
WatermarkCssClass="watermarked" />TargetControlID :يه تكس باكس
WatermarkText : متن قابل نمايش
WatermarkCssClass : كلاس css در زمان نمايش متن كه مقداري ندارد به كار مي رود.

mehdisiavashian
شنبه 25 خرداد 1387, 19:43 عصر
با تشكر از دوستان عزيزي كه زحمت كشيدند و مطلب و مقاله و آموزش در اين رابطه قرار داده اند:
1- لينك مربوط به دانلود AjaxControlToolkit-Framework3.5 رو مي زارم:
http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513

2- مي خواستم بدونم طريقه نصب اين ورژن آپديت شده مثل ورژن براي فريم ورك 2 است؟
3- اگه كسي توضيحات اضافه و مكملي در مورد اين ورژن داره، لطفا منت گذاشته و در اينجا مطرح كنه.
پيشا پيش ممنون

راستي براي دوستاني كه مثل من تازه با اين toolkit آشنا شده اند :
http://www.asp.net/ajax/ajaxcontroltoolkit/samples (http://www.asp.net/ajax/ajaxcontroltoolkit/samples/)/ (http://www.asp.net/ajax/ajaxcontroltoolkit/samples/)
بر روي منوي سمت چپ كليك كنيد و مثالهاي مختلف اين ابزار را ببينيد و لذت ببريد!

m.hamidreza
چهارشنبه 08 آبان 1387, 20:46 عصر
میشه این آموزش رو ادامه بدین!
ان شاءا...
یه مشکلی که MS AJAX داره بالارفتن وحشتناک حجم صفحه است که اگه عمری باقی باشه در ادامه به تکنیک های کاهش این حجم با استفاده از رهنمودهای مهندس بهروز خواهم پرداخت...


آموزش عالی هست در انتها در صورت امکان این آموزش را در قالب فایل PDF نیز قرار دهید


چشم!


میشه نحوه کار با AnimationExtender را به منم بگید؟؟؟

http://www.asp.net/ajax/ajaxcontroltoolkit/samples/
توی سایت asp.net سمپل های خوبی میتونید پیدا کنید.

msadgd
شنبه 18 آبان 1387, 12:43 عصر
سلام به همگي.
m.hamidreza (http://barnamenevis.org/forum/member.php?u=35652) عزيز خواستم ببينم امكانش هست در مورد Animation توضيح بديد؟ همونطور كه در پستهاي قبلي گفتيد يكي از مواردي كه مي خواستيد توضيح بديد همين مورد بود.
البته به غير از مواردي كه در سايت Asp.net هست. يعني به صورت خودموني و كاربردي تر.
ممنون

tc1000
شنبه 18 آبان 1387, 21:40 عصر
این هم از error

برنامه من راحت کار میکرد ولی چند وقته این پیام رو مده و در برنامم از response,wrie استفاده نکردم

m.hamidreza
جمعه 24 آبان 1387, 11:33 صبح
من اینکارایی که گفتید انجام دادم اما داخل این پوشه فایل dll نیست
من از vs2005 استفاده میکنم

دقیقا توی root اون پوشه نیست توی ساب فولدرهای اون پوشه هست دقیقا یادم نیست تو کدوم! با Windows Search پیداش کن.

htmbarnamenevisl
دوشنبه 27 آبان 1387, 13:09 عصر
میشه یه نفر لطف کنه و بعضی از کنترل های toolkit رو توضیح بده
اینکه چه کاربردی دارند؟
بعضیها رو توضیح دادید اما بقیه چی میشن

msadgd
سه شنبه 28 آبان 1387, 14:35 عصر
کنترل هایی که با UpdatePanel سازگار نیستن عبارتند از :

TreeView & Menu
ASP.NET Web Parts Control
FileUpload که البته راه حل داره !
GridView & DetailsView البته زمانی که ویژگی EnableSortingAndPagingCallbacks به true ست شده باشه . در حالت پیش فرض false هست .
Login,PasswordRecovery,ChangePassword,CreateUserWi zard
Substitution
Validation Controls

.

جناب حميدرضا من از وليديشن كنترل ها در يك آپديت پنل استفاده كردم. اما به مشكلي بر نخوردم و اونها كارشون رو به خوبي انجام مي دن. خواستم ببينم اين عدم ناسازگاري كه گفتين درچه زمينه اي هست؟ و اگر بعدا براي من مشكل ساز ميشه تا از حالا يه فكري بكنم و جور ديگه اي فرمم رو استفاده كنم.؟
پيشاپيش ممنون

mahdi_farhani
سه شنبه 28 آبان 1387, 14:41 عصر
یک مقداری به اشتباه وارد کن ( یعنی بزار Validate کنه ) حالا اون مقدار رو اصلاح کن ببین چه اتفاقی می افته تا اینجا هیچ مشکلی به وجود نمیاد ، حالا دوباره مقدار اشتباه وارد کن ، و ببین چه اتفاقی رخ میده

m.hamidreza
سه شنبه 28 آبان 1387, 22:38 عصر
جناب حميدرضا من از وليديشن كنترل ها در يك آپديت پنل استفاده كردم. اما به مشكلي بر نخوردم و اونها كارشون رو به خوبي انجام مي دن. خواستم ببينم اين عدم ناسازگاري كه گفتين درچه زمينه اي هست؟ و اگر بعدا براي من مشكل ساز ميشه تا از حالا يه فكري بكنم و جور ديگه اي فرمم رو استفاده كنم.؟
پيشاپيش ممنون

سری که درد نمیکنه رو که آدم دستمال نمی بنده!
Update Panel + Validation Controls (http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=BbW&q=Update+Panel%2BValidation+Controls&btnG=Search)

msadgd
سه شنبه 28 آبان 1387, 22:58 عصر
یک مقداری به اشتباه وارد کن ( یعنی بزار Validate کنه ) حالا اون مقدار رو اصلاح کن ببین چه اتفاقی می افته تا اینجا هیچ مشکلی به وجود نمیاد ، حالا دوباره مقدار اشتباه وارد کن ، و ببین چه اتفاقی رخ میده

Farhani جان عزيز اينجوريش رو امتحان نكرده بودم :لبخندساده: خيلي جالب بود. وقتي دومين بار اشتباه وارد مي كنيم ديگه وليديشن ها كار نمي كنند. اما من از يك Validation Summary استفاده كردم و Show message هم True هست. وقتي وليديشن ها درست كار نميكنند با زدن دكمه ، اين Summary فعال ميشه و پيغامهاي خطا رو نشون ميده :لبخندساده: و اجازه ادامه فعاليت نميده. چند بار امتحان كردم فكر كنم اينجوري يجورايي سرش گول ماليده بشه. درسته ؟ :بامزه:
اگه اينجوري هم باز يه جاي كار مشكل داره ممنون ميشم بگيد.
:چشمک:

Saber_Fatholahi
سه شنبه 28 آبان 1387, 23:19 عصر
Farhani جان عزيز اينجوريش رو امتحان نكرده بودم :لبخندساده: خيلي جالب بود. وقتي دومين بار اشتباه وارد مي كنيم ديگه وليديشن ها كار نمي كنند. اما من از يك Validation Summary استفاده كردم و Show message هم True هست. وقتي وليديشن ها درست كار نميكنند با زدن دكمه ، اين Summary فعال ميشه و پيغامهاي خطا رو نشون ميده :لبخندساده: و اجازه ادامه فعاليت نميده. چند بار امتحان كردم فكر كنم اينجوري يجورايي سرش گول ماليده بشه. درسته ؟ :بامزه:
اگه اينجوري هم باز يه جاي كار مشكل داره ممنون ميشم بگيد.
:چشمک:
دوست من من خیلی وقت پیش یه dll دانلود کرده بودم که این مشکل حل می کرد توی پروژه ای که گذاشتم روی سایت به کار بردم اسم dll ، هست validation وتوی فایل وب کانفیگ باید یه سری تنظیمات انجام بدی به نام TagMapping دقیقا لینک سایت خاطرم نیست اما توی پروژه خودم اونو بکار بردم

article
شنبه 09 آذر 1387, 23:39 عصر
webconfigهمه کارهايي که گفتيد انجام دادم دوتا فايل ضميمه را که گفتيد به فايل اضافه کردم
دستورات را به آخر صفحه وبم اضافه کردم
<authentication mode="Windows"/>بعد از دستور
<pages>کدهاي
<controls>
<add tagPrefix="asp" namespace="AjaxControls" assembly="AjaxControls"/>
<add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
</controls>
</pages>
را اضافه کردم اما همچنان پيغام

Unable to create type 'ajaxToolkit:ModalPopupExtender'. Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
و

Element 'ModalPopupExtender' is not a known element. This can occur if there is a compilation error in the Web site.
ميدهد.
ممنون ميشم اگه اين پيغام را پيگيري کنيد

m.hamidreza
یک شنبه 10 آذر 1387, 09:26 صبح
webconfigهمه کارهايي که گفتيد انجام دادم دوتا فايل ضميمه را که گفتيد به فايل اضافه کردم

کدوم دوتا فایل؟ dll ها؟ به کجا اضافه کردی؟
AjaxToolkit رو نصب کردی؟

peny2000
سه شنبه 08 اردیبهشت 1388, 14:52 عصر
سلام
من قبلا اين تاپيك رو چك مي كردم . ولي الان اينجا خبري نيست :ناراحت:
يه سوالي داشتم كه هر كدام از دوستان بتونن جواب بدن خيلي ممنون ميشم:لبخند:
طبق معمول قراره يه provincecombo , citycombo داشته باشيم كه با استفاده از script پر بشن
مرحله fill كردن به خوبي انجام ميشه اما وقتي مي خواد setIndex كنه مرتب citycombo رو با index صفر نمايش ميده و نميشه update اش كرد
اگه كسي بتونه كمكم كنه خيلي ممنون ميشم





----------------------------------------------------------------------- code comboha
<asp:DropDownListID="cmbBirthProvince"runat="server"
OnChange="CallGetCity(1,this.value)"Width="116px">
<asp:ListItemValue="0">Please Select</asp:ListItem>
<asp:ListItemValue="1">Province 1</asp:ListItem>
<asp:ListItemValue="2">Province 2</asp:ListItem>
</asp:DropDownList>



<asp:DropDownListID="cmbBirthCity"runat="server"Width="114px">
<asp:ListItemValue="0">-</asp:ListItem>
</asp:DropDownList>

hobab-theme
سه شنبه 09 تیر 1388, 03:33 صبح
برای شروع ابتدا باید ASP.NET AJAX v1.0 رو که حدود 1.4 مگابایته از سایت مایکروسافت (http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en) دانلود و نصب کنید
دوستان برسید بدادم
من یه مدتی نمیتونم لینکهایی رو که به مایکروسافت ربط داره رو باز کنم
لطفاً یکی آقایی کنه اینو دانلود کنه و یه جایی بذاره تا من از اونجا دانلود کنم
خیلی خیلی ممنون میشم اگه کمکم کنید
بازم ممنون

m.hamidreza
سه شنبه 09 تیر 1388, 08:34 صبح
http://rapidshare.com/files/250185175/ASPAJAXExtSetup.msi.html

hamid_kha
دوشنبه 21 آذر 1390, 22:20 عصر
یه نکته و اون اینکه پس از نصب اون فایل یه سری dll در مسیر پیش فرض زیر بصورت اتوماتیک کپی میشن :

C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensionsچیزی که مهمه اینه اگه خواستید سایتتون رو روی هاست Upload کنید باید این dll هارو در پوشه bin پروژتون روی هاست کپی کنید .
این مساله یکی از سوالات متداول دوستان بوده که وقتی سایتشون رو آپلود می کردن با یه سری Error های جاوا اسکریپتی مواجه میشدن که این بر میگرده به در نظر نگرفتن همین نکته .(البته در بعضی از هاست ها بدون کپی کردن این dll ها هم ای جکس سایت شما به زیبایی کار خواهد کرد که این نشون دهنده ی این موضوع هست که اون فایل رو سرور نصب شده)
خوب پس از نصب ASP.NET AJAX Extensions v1.0 ویژوال استادیو رو باز کنید . از منوی فایل گزینه New Web Site رو انتخاب کنید ، در پنجره ای که باز میشه یه آیتم جدید به نام ASP.NET AJAX-Enabled Web Site اضافه شده که شما برای استفاده از کنترل های ای جکس در پروژتون باید این گزینه رو انتخاب کنید و بعد هم OK . در Toolbox عنوانی اضافه شده به نام AJAX Extensions که اگه بازش کنین لیست کنترل های ای جکسی رو می بینین ...
کنترل های UpdatePanel و UpdateProgress بیشترین استفاده رو دارن .
توی اکثر وب سایت ها دیدید که مثلا موقع ثبت نام وقتی میخواین username رو وارد می کنین یه باتن هست که availabe بودن اون username رو بررسی میکنه وقتی روش کلیک میکنین یه چیزی مثه Please Waiting سه چهار ثانیه نمایش داده میشه و بدون اینکه صفحه Refresh شه میگه این username قبلا ثبت شده و یکی دیگه وارد کن ! این عملیات توسط همین دو کنترل به سادگی انجام میشه ...
در محیط Design روی فرم یه آبجکتی به نام ScriptManager قرار داره بهش کار نداشته باشین بزارین باشه واسه خودش! برای شروع یه Label با یه Button رو فرم بذارید و در رویداد Page Load بنویسید :

Label1.Visible=false;و در Onclick باتن visibilty رو true کنید :

Label1.Visible=true;وقتی برنامه رو Run کنید label دیده نمیشه و با کلیک روی باتن و Refresh شدن صفحه label ظاهر میشه ! در واقع باتن جزء کنترل هایی هست که باعث postback صفحه میشه . خوب حالا از Toolbox کنترل UpdatePanel رو انتخاب کنید و روی فرم قرار بدید label و button رو در این UpdatePanel بندازید و برنامه رو اجرا کنید حالا اگه روی button کلیک کنید اعجاب سال 2007 رو خواهید دید ! :لبخند: بدون اینکه صفحه Refresh بشه label ظاهر میشه .

کنترل هایی که با UpdatePanel سازگار نیستن عبارتند از :


TreeView & Menu
ASP.NET Web Parts Control
FileUpload که البته راه حل داره !
GridView & DetailsView البته زمانی که ویژگی EnableSortingAndPagingCallbacks به true ست شده باشه . در حالت پیش فرض false هست .
Login,PasswordRecovery,ChangePassword,CreateUserWi zard
Substitution
Validation Controls


اگه خواستین کنترل FileUpload رو تو UpdatePanel بذارید ازین تاپیک (http://barnamenevis.org/forum/showthread.php?t=75535) می تونین استفاده کنید.
بقیه کنترل ها مشکل خاصی ندارن و قابل استفاده هستن .
همونطور که دیدید بدون refresh صفحه کدی که در رویداد Button بود اجرا شد . حالا این کد هر چیزی میتونه باشه مثه یه Query که از دیتابیس گرفته میشه و یه سری رکورد قراره برگردونه ... عملا به دلیل postback نشدن صفحه سایت شما UserFriendly تر میشه و بقول بچه ها به دل کاربر میشینه ! :لبخندساده:
در حالتی که یه label ظاهر یا مخفی میشه این کار خیلی سریع انجام میشه اما ممکنه در button شما یه پرس و جوی دیتابیسی نوشته باشی و در حالتی که سایت Upload شده و با توجه به سرعت زیبای اینترنت در وطن مثلا 5 ثانیه زمان ببره تا کد توی رویداد کلیک باتن اجرا شه ، تو این حالت معمولا یه شکل گرافیکی با یه متن مثه لطفا صبر کنید به کاربر نمایش داده میشه تا کاربر بفهمه که پردازش در حال انجامه !
این کار توسط کنترل UpdatePrgress انجام میشه که در ادامه بهش خواهیم پرداخت . . .
دوست عزیز من فایل رو نصب کردم ولی وقتی خواستم یه وب سایت newکنم گزینه ای با این عنوان وجود نداردASP.NET AJAX-Enabled Web Siteچرا؟