• توجه: در صورتی که از کاربران قدیمی ایران انجمن هستید و امکان ورود به سایت را ندارید، میتوانید با آیدی altin_admin@ در تلگرام تماس حاصل نمایید.

آموزش AJAX

Masterhame

New member
سلام

فكر مي كنم بد نباشه يه سري موضوعات هم راجع به AJAX آغاز بشه

هر كي هر بحث و آموزشي راجع به AJAX داره اينجا بذاره :نیش:

خودم هم كم كم استارتش رو ميزنم
 

Masterhame

New member
AJAX چيست؟

قبل از شروع بگم كه من خيلي محاوره اي و خودموني بحث را دارم شروع مي كنم. حال و حوصله لفظ قلم نوشتن رو ندارم. همه اين مطالب رو كه دارم مطرح مي كنم از تجربيات و دانسته هاي خودم هست و اكثرشون رو خيلي وقت پيش با مطالعه منابع بسيار زياد بدست آوردم. رو اين حساب منبع خاصي رو براي مطالبم ندارم. ولي براي مطالعه بيشتر منابع مفيد و مؤثري رو اعلام مي كنم كه بسيار پر كاربرد هستن. :نیش:


اول بايد ببينم اين چيزي كه موضوع بحث هست رو چجور مي خونن!!!!

يه عده مي خونن آژاكس كه كاملا اشتباه!!!

كسايي كه فيلمهاي آموزشي Microsoft رو در اين باره ديده باشن با گوشاي خودشون شنيدن كه متخصصاي مايكروسافت هم اين كلمه رو اِي جَكس /ˈeɪdʒæks/ تلفظ مي كنن

اين كلمه مخفف كلمات Asynchronous JavaScript and XML هست

خوب! حالا اگه شما قدري راجع به JAVA Script و XML آگاهي داشته باشيد خود به خود ميتونيد حدس بزنيد كه اين تكنولوژي جديد چه كارهايي ازش بر مياد

همين جا بهتون بگم كه AJAX يك زبان برنامه نويسي جديد نيست. بلكه يك تكنولوژي يا يك توسعه (Advancement) براي روشهاي توليد و طراحي صفحات وب گذشته هست.

به همين دليل شما مي تونيد AJAX رو با PHP و با ASP و حتي با JSP هم استفاده كنيد.

خوب؛ حالا بريم سر اصل قضيه كه كليت AJAX چي چي هست و كاري كه براي شما انجام ميده چيه!

اول وضعيتي رو مطرح مي كنم كه AJAX نداره:

شما قصد داريد يك وب سايت بسيار محاوره اي ايجاد كنيد. منظورم اينه كه كاربرتون با سايت خيلي بايد ور بره جاهاي زيادي بايد كليك كنه، انتخابهاي زيادي داره، فرمهاي زيادي رو بايد پر كنه و ...
خوب! در اين وضعيت شما هم بهتر از من مي دونيد كه با هر كليك كاربر روي لينكها و دكمه هايي كه توي صفحه تعبيه كرديد كل صفحه بايد از اول refresh بشه و كلي data بايد بين server و client رد و بدل بشه. كار كردن با چنين سايتي واقعاً خسته كننده هست!!!!! بعنوان مثال سايت Yahoo Mail Classic رو ميشه مثال زد!

وضعيت دوم استفاده از AJAX:
با استفاده از AJAX توي سايتهاي محاوره اي با همون مشخصاتي كه مطرح كرديم، فقط و فقط بخشي از صفحه كه نياز به تغيير داره refresh ميشه و تمامي بخشهاي اطراف ثابت مي مونن. شما مي تونيد بخشهاي مختلفي رو داشته باشيد كه با توجه به اطلاعات خودشون فقط بصورت موضعي refresh ميشن. براي مثال اين نمونه هم مي تونم Yahoo Mail Beta رو معرفي كنم.

نمونه هاي ديگه اي هم مثل مقايسه Gmail قديم و Gmail جديد هم دقيقاً از همين تكنولوژي براي ايجاد تفاوت استفاده كردن.

خوب حالا خودتون قضاوت كنيد اگه يك كاربر باشيد ترجيح مي ديد از كدوم استفاده كنيد؟
از سيستم Total Refresh يا سيستم Partial Refresh؟

خوب؛ حالا اگه كسي حال و حوصله خوندن مطالب انگليسي داره بهترين سايت براي شروع اينه:

Ajax (programming) - Wikipedia, the free encyclopedia

تو قسمتهاي بعدي كم كم شروع مي كنيم مسائل برنامه نويسي، پيش نيازها و تخصصهاي لازم رو مطرح كرده و نمونه هاي از عمليات ممكنه با AJAX رو اجرا مي كنيم.:بای:
 

Masterhame

New member
از جناب rahnama متشكر
شرمنده من معمولاً منابع فارسي ندارم!‌ رو اين حساب تقريباً همه منابعم انگليسيه D:
 

admin

Administrator
عضو کادر مدیریت
Masterhame عزيز بحث و موضوع بسيار عالي و بسيار متدول لازم براي وبمسترها رو انتخاب كردي ...
بله اين روزها روند رو به رشد ajax خيلي زياد داره خودش رو توي طراحي هاي سايتها نشون ميده و رفته رفته جزء غير قابل گذشت در طراحي گونه اي از سايتها شده كه بدون استفاده از اين نوع سيستم برنامه نويسي امكان راه اندازيشون نخواهد بود .

مزيت هاي زيادي رو براي اين سيستم شمردند و محسوس هست براي هممون ولي يكي از معايب بزرگي كه ميشه براش نام برد و زياد گفته ميشه مشكل اين سيستم با بحث سئو در موتورهاي جستجوگر هست كه جاي زيادي براي بحث در اين باره دارد .
 

Masterhame

New member
مزيت هاي زيادي رو براي اين سيستم شمردند و محسوس هست براي هممون ولي يكي از معايب بزرگي كه ميشه براش نام برد و زياد گفته ميشه مشكل اين سيستم با بحث سئو در موتورهاي جستجوگر هست كه جاي زيادي براي بحث در اين باره دارد .

بحث شما درسته ولي اين هم راه داره

ببينيد. اين مشكل در گذشته هم وجود داشته
فرض كنيد شما اطلاعاتي كه قصد داريد نمايش بديد توي DataBase قرار گرفته و سيستمي رو طراحي كرديد كه با توجه به نياز و انتخابهاي كاربر محتويات يك صفحه رو براي كاربر ميسازيد و به اون نمايش ميديد.
بعنوان مثال مثل يك سايت فروشگاه كه كاربر مشخصات كالاهاي مورد نيازش رو انتخاب كرده و سايت كالاهاي متناسب با انتخاب كاربر رو براش ليست مي كنه!!!!

چه سايت خوبي!!!! :نیش:

ولي اين سايت هم دقيقاً همون مشكل رو با SEO يا همون Search Engine Optimazition داره!!!
كسايي كه مي خوان بدون SEO چيه اينجا هم يه سري مطلب راجع به SEO هست:

Search engine optimization - Wikipedia, the free encyclopedia

بعداً يه تاپيك هم راجع به همين مي سازيم:سوت:

مشكل AJAX با SEO روي قضيه كاملاً Dynamic بودن صفحات هست. اگه اين مشكل واقعاً يك مشكل باشه؛ پس سايتهايي مثل EBay و Amazon بسيار بسيار از رقيباشون عقب خواهند افتاد!!!! :نیش: چون اونها داراي صفحات تمام Dynamic هستند.

با توجه به راهبردها و روشهايي كه براي توسعه SEO گفته شده بايد صفحات Dynamic از ساير روشهاي موجود براي اعلام اطلاعاتشون با موتورهاي جستجو استفاده كنند.

يك سري از اين روشها اينه:

1. استفاده از تگهاي Meta
2. استفاده از keyword هاي مناسب براي صفحات Dynamic
3. بكارگيري كلمات مرتبط با موضوع اصلي صفحه به تعداد مورد نياز و بحث شده در مباحث SEO در بخشهاي ثابت و بدنه اصلي صفحه
و ...
 

Masterhame

New member
جلسه اول آموزش AJAX

جلسه اول آموزش AJAX


براي اجراي اين مباحث شما بايد Visual Studio 2008 يا Visual Studio 2010 رو روي سيستمتون نصب كرده باشيد. البته با VS2005 هم ميشه اما اون رو توصيه نمي كنم چون راه اندازي AJAX توش يه مقدار دنگ و فنگ داره!
اما توي VS2008 يا VS2010 بصورت پيش فرض موجوده

شما بعنوان پيش نياز بايد تا حدي به برنامه نويسي صفحات وب و به خصوص با ASP.Net آشنايي داشته باشيد

به اين ترتيب كه مي گم عمل كنيد:

از منوي File گزينه New و بعدش Web Site رو انتخاب كنيد.

به هر سبكي كه باهاش راحت هستيد وب سايتتون رو آماده كنيد.
زبان رو C# يا VB انتخاب كنيد. ولي من با #C اينجا آموزش مي دم. البته اين رو هم بگم كه هيچ فرقي بين دستورات VB و #C وجود نداره و اگه شما به VB تسلط داريد با خوندن اين آموزشها مي تونيد روند كارتون رو توي VB هم پيش ببريد.

خوب

حالا يه صفحه جلوتون باز شده كه بالاش نوشته Default.aspx كه بعنوان صفحه اصلي وب سايتتون هست

حالا يه اول يه Label روي صفحه اضافه كنيد و اسمش رو بذاريد lblOldTime

بعدش چند تا Enter بزنيد تا يه مقدار بريد پايين تر و حالا از توي ToolBox از قسمت AJAX Extionsions يه دونه ScriptManager به صفحه اضافه كنيد.

بايد بگم كه ScriptManager كلاسيه كه اجراي عمليات AJAX رو تحت كنترل مي گيره و در واقع بدون تنظيمات خاصي به شما خدماتي كه مد نظرتون هست رو ارائه مي كنه. اين شئ توي نمايش، به كاربر نشون داده نميشه! پس شما هر جا كه دوس داشته باشيد مي تونيد اون رو قرار بديد:)

خوب؛ حالا نوبت به اضافه كردن مهمترين شئ به صفحه مي رسه. از همون قسمت AJAX Extensions يه دونه UpdatePanel به صفحه اضافه كنيد.
شئ UpdatePanel همون بخشي هست كه مي تونيد بصورت موضعي توي صفحه Refresh كنيد. بدون اينكه ساير بخشهاي صفحه تغييري داشته باشند! :نیش:

حالا توي UpdatePanel يه دونه Label به اسمه lblAjaxTime و يه Button به اسم btnRefresh اضافه كنيد.

حالا كد زير رو توي Page_Load بنويسيد:

کد:
lblOldTime.Text = DateTime.Now.ToString();

و توي btnRefresh اين كد رو بنويسيد:

کد:
lblAjaxTime.Text = DateTime.Now.ToString();


حالا صفحه رو اجرا كنيد.

نتيجه اجرا چيه؟

زماني كه صفحه بارگذاري ميشه تاريخ و زمان فعلي توي Label اول نوشته مي شه كه زمان اجراي عمليات Page_Load هستش.
حالا با زدن دكمه btnRefresh مي بينيد كه فقط مقدار Label دوم تغيير پيدا مي كنه.
اين قضيه به ما نشون ميده كه به زدن دكمه در اين روش، صفحه از اول بارگذاري نميشه! چون اگه از اول بارگذاري ميشد، اونوقت بايد مقدار Label اول هم تغيير مي كرد!
براي اينكه متوجه بشيد قضيه از چه قرار بود توصيه مي كنم همين كار رو يك بار هم بودن استفاده از UpdatePanel و در واقع AJAX اجرا بكنيد.
 

takideh

New member
سلام دوست من
يه مشكل در رابطه با ايجكس دارم
از يه تايمر استفاده كردم كه تو آپديت پنله و پايين صفحه ست درست كار ميكنه صفحه رفرش نميشه
اما هر بار تايمر فراخواني ميشه صفحه پرش داره يعني از بالاي صفحه نشون ميده
چه جوري ميشه اين مشكلو حل كرد؟
 

takideh

New member
سلام
من در سايت خودم از ايجكس استفاده كردم درست كاري رو كه ميخوام انجام ميده صفحه دوباره لود نميشه
اما صفحه پرش داره
از دوستان عزيز خواهش ميكنم منو راهنمايي كنيد اين موضوع منو درگير كرده
 

admin

Administrator
عضو کادر مدیریت
takideh عزیز متاسفانه دوستمون Masterhame که راه انداز تاپیک هستند فعلا برای پاسخ گویی حضور ندارند میتونید براشون پیام بگذارید یا از ایمیل استفاده کنید تا انشاالله ببینند و راهنماییتون کنن .
 

parniann

کاربر ويژه
این مقاله، یک برنامه نمونه (sample application) ایجاد می کند که از ویژگی های AJAX ASP.NET استفاده می کند.
در این مقاله، برنامه ای خواهید ساخت که صفحات اطلاعات کارمندان را از بانک اطلاعاتی نمونه AdventureWorks نمایش می دهد. این برنامه از کنترل UpdatePanel برای ریفرش کردن تنها بخشی از صفحه که تغییر پیدا کرده است، استفاده می کند؛ بدون اینکه page flashیی که با post back اتفاق می اقتد.این کار، "آپدیت جزیی صفحه" (partial-page update) نامیده می شود. همچنین برنامه نمونه از کنترل UpdateProgress، جهت نمایش پیام وضعیت، هنگامی که آپدیت جزیی صفحه در حال اجرا است، استفاده می کند.

پیش نیازها

شما برای پیاده سازی این مقاله، به موارد زیر احتیاج دارید:


  • Microsoft Visual Studio 2005 یا Microsoft Visual Web Developer Express.


  • یک وب سایت ASP.NET با قابلیت AJAX


  • بانک اطلاعاتی نمونه AdventureWorks.
ایجاد وب سایت ASP.NET

وب سایتی که بطور پیش فرض در ASP.NET ایجاد می کنید، قابلیت Microsoft Ajax را ساپورت می کند.
ایجاد یک وب سایت ASP.NET با قابلیت AJAX


  1. Visual Studio را باز کنید.
  2. در منوی File، روی New Web Site کلیک کنید. ( پنجره New Web Site ظاهر می شود.)
  3. زیر Visual Studio installed templates، گزینه ASP.NET Web Site را انتخاب کنید.
  4. مکان (location) و زبان را وارد کنید و سپس OK کنید.

اضافه کردن کنترل UpdatePanel به صفحه وب ASP.NET

بعد از اینکه یک وب سایت ASP.NET ایجاد کردید، باید یک صفحه وب ایجاد کنید که حاوی کنترل UpdatePanel باشد. قبل از اینکه کنترل UpdatePanel را به صفحه اضافه کنید، باید یک کنترل ScriptManager اضافه کنید. کنترل UpdatePanel، وابسته به کنترل ScriptManager، جهت مدیریت کردن آپدیت جزیی صفحه، است.
ایجاد یک صفحه وب ASP.NET
1. در Solution Explorer، روی نام سایت کلیک راست و سپس روی Add New Item کلیک کنید.
پنجره Add New Item ظاهر می شود.
2. زیر Visual Studio installed templates، گزینه Web Form را انتخاب کنید.
3. صفحه جدید Employees.aspx را نامگذاری کنید و تیک گزینه Place code in separate file را بردارید.
4. زبانی را که می خواهید استفاده کنید، انتخاب کنید.
5. روی Add کلیک کنید.
6. به ویووی Design سوییچ کنید.
7. در تب AJAX Extensions در toolbox، روی کنترل ScriptManager دابل کلیک کنید تا آن را به صفحه اضافه کنید.


8. یک کنترل UpdatePanel از toolbox درگ کنید و و زیر کنترل ScriptManager دراپ کنید.



اضافه کردن محتوا (content) به کنترل UpdatePanel

کنترل UpdatePanel، آپدیت جزیی صفحه را اجرا می کند و محتوایی را که باید بطور مجزا از بقیه صفحه آپدیت شود، تعیین می کند. در این بخش ار مقاله، باید یک کنترل محدود به داده ها (data-bound) اضافه کنید که داده های بانک اطلاعاتی AdventureWorks را نمایش می دهد.
1. در تب Data در toolbox، یک کنترل GridView به ناحیه قابل ویرایش کنترل UpdatePanel درگ کنید.
2. در منوی GridView Tasks، روی Auto Format کلیک کنید.
3. در پنل Auto Format، زیر Select a scheme، گزینه Colorful را انتخاب و سپس OK کنید.
4. در منوی GridView Tasks، گزینه <New data source> را از لیست Choose Data Source انتخاب کنید.
ویزارد Data Source Configuration ظاهر می شود.
5. زیر Where will the application get data from، گزینه Database را انتخاب و سپس OK کنید.
6. برای مرحله Choose Your Data Connection، در ویزارد Configure Data Source، یک کانکشن به بانک اطلاعاتی AdventureWorks ایجاد کنید و سپس روی کلیک کنید.
7. در مرحله Configure the Select Statement، گزینه Specify a custom SQL statement or stored procedure را انتخاب و سپس روی Next کلیک کنید.
8. در مرحله Define Custom Statement or Stored Procedures، در تب SELECT، عبارت SQL زیر را وارد کنید:

SELECT FirstName, LastName FROM Hm ss.vEmployee ORDER BY LastName, FirstName

9. روی Next کلیک کنید.
10. روی Finish کلیک کنید.
11. در منوی GridView Tasks، چک باکس Enable paging را فعال کنید.
12. تغییرات را ذخیره کنید، و CTRL+F5 را فشار دهید تا صفحه را در مرورگر مشاهده کنید.
توجه داشته باشید هنگام انتخاب صفحه های داده ها، هیچ page flashیی وجود ندارد. به این دلیل که صفحه مورد نظر هیچ postbsck یا هربار آپدیت کردن کل صفحه را اجرا نمی کند.

اضافه کردن کنترل UpdateProgress به صفحه

1. کنترل UpdateProgress، هنگام request محتوای جدید کنترل UpdatePanel،یک پیام وضعیت (status message)، نشان می دهد.
2. یک کنترل UpdateProgress از تب AJAX Extensions درtoolbox، روی صفحه درگ کنید و آن را زیر کنترل UpdatePanel دراپ کنید.
3. کنترل UpdateProgress را انتخاب کنید، و در پنجره Properties، پراپرتی AssociatedUpdatePanelID را روی UpdatePanel1 تنظیم کنید.
این کار، کنترل UpdateProgress را به کنترل UpdatePanel، که قبلاً اضافه کرده اید، مرتبط می کند.
4. در ناحیه قابل ویرایش کنترل UpdateProgress،عبارت Getting Employees ... را تایپ کنید.
5. تغییرات را ذخیره کنید، و CTRL+F5 را فشار دهید تا صفحه را در مرورگر مشاهده کنید.
اگر هنگامی که صفحه، SQL query را اجرا می کند و داده ها را باز می گرداند تاخیری وجود داشته باشد، کنترل UpdateProgress، پیامی را نمایش می دهد که در کنترل UpdateProgress وارد کرده اید.
اضافه کردن Delay به Sample Application
اگر برنامه شما هر صفحه داده را سریعاً آپدیت می کند، شاید محتوای کنترل UpdateProgress را روی صفحه نبینید. این کنترل، پراپرتی DisplayAfter را، که شما را قادر می کند یک تاخیر (delay) قبل از نمایش کنترل قرار دهید، ساپورت می کند. این کار، اگر آپدیت خیلی سریع اتفاق بیافتد، کنترل را از flashing در مرورگر باز می دارد. این تاخیر بطور پیش فرض، روی 500 میلی ثانیه (نصف ثانیه) تنظیم است، بدین معنی که اگر آپدیت کمتر از نیم ثانیه طول بکشد، کنترل UpdateProgress نمایش داده نخواهد شد.
در محیط development، می توانید یک تاخیر مصنوعی به برنامه تان اضافه کنید تا مطمئن شوید که کنترل UpdateProgress همانطور که انتظار می رفت عمل می کند. این کار اختیاری است و فقط برای تست کردن برنامه تان است.
1. درون کنترل UpdatePanel، کنترل GridView را انتخاب کنید.
2. در پنجره Properties، روی دکمه Events کلیک کنید.
3. روی ایونت PageIndexChanged دابل کلیک کنید تا یک event handler ایجاد کنید.
4. کد زیر را به ایونت هندلر PageIndexChanged اضافه کنید تا یک تاخیر سه ثانیه ای ایجاد کنید.
در VB:

'Include three second delay for example only.
System.Threading.Thread.Sleep(3000)



در C#:

//Include three second delay for example only.
System.Threading.Thread.Sleep(3000);



5. تغییرات را ذخیره کنید، و CTRL+F5 را فشار دهید تا صفحه را در مرورگر مشاهده کنید.
از آنجاییکه حالا هر دفعه که به صفحه جدیدی از داده ها می رویم یک تاخیر سه ثانیه ای داریم، می توانید کنترل UpdateProgress را ببینید.
در VB:

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

Protected Sub GridView1_PageIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
'Include three second delay for example only.
System.Threading.Thread.Sleep(3000)
End Sub
</script>

<html xmlns="http://www.w.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" CellPadding="4" DataSourceID="SqlDataSource1"
ForeColor="#333333" GridLines="None" OnPageIndexChanged="GridView1_PageIndexChanged">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorksConnectionString %>"
SelectCommand="SELECT FirstName, LastName FROM HumanResources.vEmployee ORDER BY LastName, FirstName">
</asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
Getting employees...
</ProgressTemplate>
</asp:UpdateProgress>
</form>
</body>
</html>



در C#:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
//Include three second delay for example only.
System.Threading.Thread.Sleep(3000);
}
</script>

<html xmlns="http://www.w.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" CellPadding="4" DataSourceID="SqlDataSource1"
ForeColor="#333333" GridLines="None" OnPageIndexChanged="GridView1_PageIndexChanged">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorksConnectionString %>"
SelectCommand="SELECT FirstName, LastName FROM HumanResources.vEmployee ORDER BY LastName, FirstName">
</asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
Getting employees...
</ProgressTemplate>
</asp:UpdateProgress>
</form>
</body>
</html>


 
بالا