# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Web Forms >  **مقاله آموزشی **نحوه استفاده از کنترل های MS AJAX

## m.hamidreza

*توجه:
کلیه ی حقوق این مقاله متعلق به سایت www.barnamenevis.org است.
نقل از نوشته های این مقاله منوط به ذکر نام منبع است.
*با توجه به سوالات متفاوتی که اعضای جدید سایت در مورد نحوه استفاده از کنترل های MS AJAX می پرسیدن بر آن شدم :لبخند:  مقاله ای در مورد شیوه بکارگیری این کنترل ها در یک برنامه تحت وب بنویسم . 
امیدوارم این مقاله بتونه شروع خوبی برای دوستانی باشه که می خوان از این تکنولوژی در سایت هاشون استفاده کنن و در ابتدای راه هستن .... 

*مقدمه :

*در مورد مفاهیم اولیه AJAX یا ای جکس میتونین به این لینک مراجعه کنید . فرض بر اینه که دوستان آشنایی اولیه دارن .
مایکروسافت ازون جایی که ارادت خاصی به مشتریاش داره! اومد کار رو برای برنامه نویسان ASP.NET راحت کرد و مجموعه ای رو تحت عنوان ATLAS ارائه کرد که امکان ایجاد حرکت های نمایشی AJAX ای رو در  ASP.NET فراهم میکرد !  :لبخند: 
این مجموعه توسعه یافت و تحت عنوان MS AJAX یا ASP.NET AJAX نهایی شد . 
در این مجموعه کنترل هایی ارائه شده که هر کدوم کاربرد خاصی دارن و مورد استفاده در ASP.NET 2.0 هستن .
برای شروع ابتدا باید ASP.NET AJAX v1.0 رو که حدود 1.4 مگابایته از سایت مایکروسافت   دانلود و نصب کنید . پس از نصب ، کنترل های مورد نظر به ToolBox ویژوال استودیو اضافه خواهد شد . در پست های بعدی راجع به کنترل های AJAX Toolkit هم صحبت میکنیم .
در ادامه یک پروژه ایجاد و از امکانات اولیه ASP.NET AJAX در اون پروژه استفاده می کنیم . . .

----------


## m.hamidreza

یه نکته و اون اینکه پس از نصب اون فایل یه سری 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 & MenuASP.NET Web Parts ControlFileUpload که البته راه حل داره !GridView & DetailsView البته زمانی که ویژگی EnableSortingAndPagingCallbacks به true ست شده باشه . در حالت پیش فرض false هست .Login,PasswordRecovery,ChangePassword,CreateUserWi  zardSubstitutionValidation Controls
اگه خواستین کنترل FileUpload رو تو UpdatePanel بذارید ازین تاپیک می تونین استفاده کنید.
بقیه کنترل ها مشکل خاصی ندارن و قابل استفاده هستن .
همونطور که دیدید بدون refresh صفحه کدی که در رویداد Button بود اجرا شد . حالا این کد هر چیزی میتونه باشه مثه یه Query که از دیتابیس گرفته میشه و یه سری رکورد قراره برگردونه ... عملا به دلیل postback نشدن صفحه سایت شما UserFriendly تر میشه و بقول بچه ها به دل کاربر میشینه !  :لبخند:  
در حالتی که یه label ظاهر یا مخفی میشه این کار خیلی سریع انجام میشه اما ممکنه در button شما یه پرس و جوی دیتابیسی نوشته باشی و در حالتی که سایت Upload شده و با توجه به سرعت زیبای اینترنت در وطن مثلا 5 ثانیه زمان ببره تا کد توی رویداد کلیک باتن اجرا شه ، تو این حالت معمولا یه شکل گرافیکی با یه متن مثه _لطفا صبر کنید_ به کاربر نمایش داده میشه تا کاربر بفهمه که پردازش در حال انجامه !
 این کار توسط کنترل UpdatePrgress انجام میشه که در ادامه بهش خواهیم پرداخت . . .

----------


## el_abdollahi

سلام
من قبلا با AJAX آشنایی نداشتم و سایتی رو که دارم روش کار میکنم از نوع وب سایت معمولی هستش ، آیا می تونم از AJAX توش استفاده کنم ؟
استفاده کردم ولی هیچ تغییری در عملکرد فرم حاصل نشد .

----------


## ClaimAlireza

باید به web.config یه سری چیزها رو اضافه کنین.

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

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

----------


## el_abdollahi

سلام .
با تشکر . الان سایتم با AJAX  سازگار شده و صفحاتم رو بدون post back  اجرا میکنه .
فقط ببخشید اینقدر سوال میپرسم ولی توی صفحاتم از دستور زیر استفاده میکنم که موقع اجرا یه alert بهم میده و اجرا نمیشه :

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

----------


## el_abdollahi

این هم از error

----------


## mahdi_farhani

کلاً Ajax با Response.write مشکل داره ، و همچنین با ClientScript هم درست جواب نمیده برای حل این مشکل شما باید Scriptmanager استفاده کنی .
میتونی این تاپیک هم یه نگاهی بندازی 
https://barnamenevis.org/showthread.php?t=83085

----------


## m.hamidreza

و اما 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

برای ساخت تصاویر زیباتر لودینگ برای UpdateProgress میتوانید از سایت زیر استفاده کنید :

http://www.ajaxload.info

----------


## Behrouz_Rad

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

متشکرم.

----------


## m.hamidreza

*AJAX Control Toolkit
============
*خوب در این پست شیوه نصب AJAX Control Toolkit رو بررسی میکنیم .
همون طور که در پست های قبلی گفته شد کنترل های Toolkit کنترل هایی هستن که هر کدوم به منظوری خاص ایجاد شدن و در واقع یه سری کنترل برای سفارشی کردن وب سایت شماست  . یه نگاه به این کنترل ها بندازید تا التفات کامل حاصل شود ، در لیست سمت چپ کنترل ها رو انتخاب کنید یه نمونه میبینید که میتونید تستش کنید :
AJAX CONTROL TOOLKIT SAMPLES

برای این که بتونید از این کنترل در وب سایتتون استفاده کنید این مراحل رو باید انجام بدید :
از اینجا فایل 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

آقا من از کنترل MaskedEditExtender در Toolkit استفاده کردم برای اعداد ولی میخواهم تا هر رقمی را که وارد کرد 3 رقم 3 رقم بشه نه یه عدد محدود باید چکار کنم ؟

----------


## mahdi_farhani

شما از تابع تاوا اسکریپت استفاده کن و سه رقم را جدا کن و همچنین از FilteredTextbox استفاده کن تا چیزی به غیر از عدد وارد نکنه .. ولی اینطوری که شما میگید تا حالا امتحان نکردم .

----------


## mahdi_negahi

> شما از تابع تاوا اسکریپت استفاده کن و سه رقم را جدا کن و همچنین از FilteredTextbox استفاده کن تا چیزی به غیر از عدد وارد نکنه .. ولی اینطوری که شما میگید تا حالا امتحان نکردم .


اگر این کارو بکنی FilteredTextbox نمیگذاره اون کاراکتری که برای جدا کردن 3 رقم است را وارد شه و نمایش داده شود

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

----------


## mahdi_farhani

> اگر این کارو بکنی FilteredTextbox نمیگذاره اون کاراکتری که برای جدا کردن 3 رقم است را وارد شه و نمایش داده شود


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

----------


## karimi84

من برنامه تا الان بدون ajax نوشتم ایا صفحات بعدی را می توانم با ajax کار کنم؟
البته وقتی که صفحه جدید می خواهم اضافه کنم  ASP.NET AJAX Extensions v1.0  وجود ندارد
(تمامی مراحلی که گفتیند در یک پروژه دیگر انجام دادم و جواب گرفتم
) با تشکر

----------


## m.hamidreza

> من برنامه تا الان بدون ajax نوشتم ایا صفحات بعدی را می توانم با ajax کار کنم؟


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

----------


## merlin_vista

در ادامه فعالیت دوست عزیز 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

@merlin_vista
 :لبخند:  دستت درد نکنه برادر ! فقط من خودم دارم راجع به AnimationExtender و Accordion می نویسم . شما اگه خواستی زحمت بکشی غیر این دو تا رو بنویس ...  :تشویق:

----------


## fadaei2005

سلام
من در صفحه هام از tab panel  ajaxtoolkit  استفاه کردم حالا وقتی از کمپرسور صفحه استفاده کردم 
صفحه هام زمان لود شدن قاطی میکنه و لود نمیشه.

----------


## eworkpro

> و اما 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();
> ...


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

----------


## m.hamidreza

> ولی چنین چیزی توش نیست ؟


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

----------


## eworkpro

والا من با اسکریپت منیجر و آپدیت پنلش کار می کردم ولی این اپدیت پروگرس اصلا توش وجود نداره . آدرس dll اش رو هم پیدا کردم ولی تا می یام add کنم erro می ده که نمی تونه لودش کنه !
من یکبار هم repairesh کردم ولی فایده نداشت.
حالا می شه آدرس فایلش رو اصلا بده من برم اون رو دانلود کنم ؟!

----------


## m.hamidreza

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

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

----------


## fazel-d

*TextBoxWatermark
*همون چيزي كه در بالاي صفحه سايت barnamenevis.org  جهت جستجوي توي گوگل مي بينيد.
در اين كنترل به جاي قرار دادن يه ليبل قبل از اين تكس باكس مي تونيد يه برچسب در داخل اين كنترل قرار بدين . كه با كليك كردن در داخلش نوشته ها حذف و با خارج شدن كنترل از اون دوباره نوشته ها بر مي گرده. البته مي تونيد حتي عكس هم توش بذارين.
<ajaxToolkit:TextBoxWatermarkExtender ID="TBWE2" runat="server"
    TargetControlID="TextBox1"
    WatermarkText="Type First Name Here"
    _WatermarkCssClass_="watermarked" />*TargetControlID :يه تكس باكس
* WatermarkText : متن قابل نمايش
_WatermarkCssClass : كلاس css در زمان نمايش متن كه مقداري ندارد به كار مي رود._

----------


## mehdisiavashian

با تشكر از دوستان عزيزي كه زحمت كشيدند و مطلب و مقاله و آموزش در اين رابطه قرار داده اند:
1- لينك مربوط به دانلود AjaxControlToolkit-Framework3.5 رو مي زارم:
http://www.codeplex.com/AjaxControlT...ReleaseId=8513

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

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

----------


## m.hamidreza

> میشه این آموزش رو ادامه بدین!


ان شاءا...
یه مشکلی که MS AJAX داره بالارفتن وحشتناک حجم صفحه است که اگه عمری باقی باشه در ادامه به تکنیک های کاهش این حجم با استفاده از رهنمودهای مهندس بهروز خواهم پرداخت...




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


چشم!




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


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

----------


## msadgd

سلام به همگي.
m.hamidreza  عزيز خواستم ببينم امكانش هست در مورد Animation توضيح بديد؟ همونطور كه در پستهاي قبلي گفتيد يكي از مواردي كه مي خواستيد توضيح بديد همين مورد بود.
البته به غير از مواردي كه در سايت Asp.net هست. يعني به صورت خودموني و كاربردي تر.
ممنون

----------


## tc1000

> این هم از error


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

----------


## m.hamidreza

> من اینکارایی که گفتید انجام دادم اما داخل این پوشه فایل dll نیست
> من از vs2005 استفاده میکنم


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

----------


## htmbarnamenevisl

میشه یه نفر لطف کنه و بعضی از کنترل های toolkit رو توضیح بده
اینکه چه کاربردی دارند؟
بعضیها رو توضیح دادید اما بقیه چی میشن

----------


## msadgd

> کنترل هایی که با UpdatePanel سازگار نیستن عبارتند از :
> TreeView & MenuASP.NET Web Parts ControlFileUpload که البته راه حل داره !GridView & DetailsView البته زمانی که ویژگی EnableSortingAndPagingCallbacks به true ست شده باشه . در حالت پیش فرض false هست .Login,PasswordRecovery,ChangePassword,CreateUserWi  zardSubstitutionValidation Controls
> .


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

----------


## mahdi_farhani

یک مقداری به اشتباه وارد کن ( یعنی بزار Validate کنه ) حالا اون مقدار رو اصلاح کن ببین چه اتفاقی می افته تا اینجا هیچ مشکلی به وجود نمیاد ، حالا دوباره مقدار اشتباه وارد کن ، و ببین چه اتفاقی رخ میده

----------


## m.hamidreza

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


سری که درد نمیکنه رو که آدم دستمال نمی بنده!
Update Panel + Validation Controls

----------


## msadgd

> یک مقداری به اشتباه وارد کن ( یعنی بزار Validate کنه ) حالا اون مقدار رو اصلاح کن ببین چه اتفاقی می افته تا اینجا هیچ مشکلی به وجود نمیاد ، حالا دوباره مقدار اشتباه وارد کن ، و ببین چه اتفاقی رخ میده


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

----------


## Saber_Fatholahi

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


دوست من من خیلی وقت پیش یه dll دانلود کرده بودم که این مشکل حل می کرد توی پروژه ای که گذاشتم روی سایت به کار بردم اسم dll ، هست validation وتوی فایل وب کانفیگ باید یه سری تنظیمات انجام بدی به نام TagMapping دقیقا لینک سایت خاطرم نیست اما توی پروژه خودم اونو بکار بردم

----------


## article

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

> webconfigهمه کارهايي که گفتيد انجام دادم دوتا فايل ضميمه را که گفتيد به فايل  اضافه کردم


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

----------


## peny2000

[RTL_INLINE] 
سلام
من قبلا اين تاپيك رو چك مي كردم . ولي الان اينجا خبري نيست  :ناراحت: 
يه سوالي داشتم كه هر كدام از دوستان بتونن جواب بدن خيلي ممنون ميشم :لبخند گشاده!: 
طبق معمول قراره يه provincecombo , citycombo داشته باشيم كه با استفاده از script پر بشن
مرحله fill كردن به خوبي انجام ميشه اما وقتي مي خواد setIndex كنه مرتب citycombo رو با index صفر نمايش ميده و نميشه update اش كرد 
اگه كسي بتونه كمكم كنه خيلي ممنون ميشم 
[/RTL_INLINE] 
----------------------------------------------------------------------- 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

> برای شروع ابتدا باید ASP.NET AJAX v1.0 رو که حدود 1.4 مگابایته از سایت مایکروسافت دانلود و نصب کنید


دوستان برسید بدادم
من یه مدتی نمیتونم لینکهایی رو که به مایکروسافت ربط داره رو باز کنم
لطفاً یکی آقایی کنه اینو دانلود کنه و یه جایی بذاره تا من از اونجا دانلود کنم
خیلی خیلی ممنون میشم اگه کمکم کنید
بازم ممنون

----------


## m.hamidreza

http://rapidshare.com/files/25018517...Setup.msi.html

----------


## hamid_kha

> یه نکته و اون اینکه پس از نصب اون فایل یه سری 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 ظاهر میشه .
> ...


 دوست عزیز من فایل رو نصب کردم ولی وقتی خواستم یه وب سایت newکنم گزینه ای با این عنوان وجود نداردASP.NET AJAX-Enabled Web Siteچرا؟

----------

