کنترل Timer

10 / 10
از 1 کاربر

در این قسمت از آموزش Ajax در طراحی سایت به توضیح کنترل Timer می پردازیم . کنترل Timer به صورت متناوب ، در بازه زمانی تعیین شده ، صفحه را Postback می کند . همچنین اگر این کنترل را همراه با یک کنترل UpdatePannel به کار ببرید ، می توانید قفقط بخشی از صفحه که کنترل UpdatePannel شامل آن می شود را به صورت متناوب ، به روز رسانی کنید .
این کنترل همچنین می تواند ، پس از گذشت مدت زمانی معین ، کل صفحه را به آدرس دیگری Post نماید .

شما می توانید از کنترل Timer ، برای انجام امور زیر استفاده نمایید :

√ محتویات یک یا چند کنترل UpdatePannel را بدون رفرش کردن و Postback شدن کل صفحه ، در فواصل زمانی معین ، به روز نمایید .
√ کد یا کدهای مورد نظر خود را هر بار که کنترل Timer صفحه را Postback می کند ، اجرا نمایید .
√ به صورت متناوب و در فواصل زمانی دلخواه ، کل صفحه را به سرور Post نمایید .

کنترل Timer یک کنترل سرور ASP.Net است ، که برای اجرای بر روی صفحات ، یک Component یا جزء جاوا اسکریپت را به صفحه اضافه می کند . جزء جاوا اسکریپت درون صفحه ، پس از گذشت مدت زمان تعیین شده در خاصیت Interval کنترل Timer ، به صورت متناوب ، صفحه را Postback می کند .
در طراحی صفحه ASP.Net ، هر خاصیتی را که برای کنترل Timer تعیین کنید ، در هنگام اجرای صفحه توسط سرور به جزء جاوا اسکرییت مرتبط با آن در صفحه ، ارسال می شود .
برای کارکرد درست کنترل Timer ، حتما بایستی یک کنترل یا یک نمونه از کلاس ScriptManager ، بر روی صفحه وجود داشته باشد .
هر بار که Postback توسط کنترل Timer اجرا شود ، این کنترل رویداد Tick خود را اجرا می کند . شما می توانید ، کدهای مورد نظر خود را برای اجرای متناوب در این رویداد کنترل ، قرار دهید .
از خاصیت Interval کنترل Timer برای تعیین دوره زمانی Postback شدن کنترل و از خاصیت Enabled آن برای روشن یا خاموش کردن آن استفاده می شود .
خاصیت Intervals بر حسب میلی ثانیه تعیین شده و مقدار پیش فرض آن 60000 میلی ثانیه ، یا 60 ثانیه است . همچنین خاصیت Enabled ، می تواند دارای یکی از دو مقدار true یا false باشد .

نکته : تعیین مدت زمان دوره تناوب کنترل Timer به مقدار خیلی کم ، می تواند باعث هنگ کردن صفحه و تحمیل بار اضافه به سرور شود . بنابراین ، فقط در زمانی که نیاز دارید ، صفحه را Postback نمایید .
شما می توانید بیش از یک کنترل Timer را بر روی صفحه قرار دهید ، چنانچه لازم باشد ، کنترل های مختلف UpdatePannel ، در فواصل زمانی گوناگون به روز شوند . اما یک کنترل Timer را می توانید برای کنترل چندین کنترل UpdatePannel ، به صورت همزمان به کار ببرید .

استفاده از یک کنترل Timer درون یک کنترل UpdatePannel :

هنگامی که یک کنترل Timer را درون یک کنترل UpdatePannel قرار دهید ، به صورت اتوماتیک کنترل Timer به عنوان رفرش کننده و آپدیت کننده آن عمل می کند .
شما می توانید این رفتار کنترل Timer را با قرار دادن مقدار خاصیت ChildrenAsTriggers کنترل UpdatePannel ، بر روی مقدار false کنسل کنید .
برای کنترل Timer ای که درون یک کنترل UpdatePannel قرار دارد ، مدت زمان شمارش دوره تناوب زمانی آغاز می شود ، که عمل Postback صفحه به طور کامل اجرا شود . بنابراین دوره تناوب آن تا زمانی که صفحه به طور کامل از سرور باز نگردد ، شروع نمی شود .
برای مثال ، اگر دوره تناوب کنترل تایمر را 60 ثانیه تعیین کرده و انجام عمل Postback صفحه 3 ثانیه طول بکشد ، سری بعدی دوره تناوب کنترل تایمر ، 63 ثانیه بعد خواهد بود .
در مثال زیر ، کد قرار گرفتن یک کنترل Timer درون یک کنترل UpdatePannel را مشاهده می کنید :

<asp:ScriptManager runat="server" ID="ScriptManager1" />
<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
 <ContentTemplate>
    <asp:Timer ID="Timer1" runat="server" Interval="12000" OnTick="Timer1_Tick">
    </asp:Timer>
 </ContentTemplate>
</asp:UpdatePanel>

استفاده از یک کنترل Timer بیرون از یک کنترل UpdatePannel :

اگر کنترل Timer را بیرون از تگ کنترل UpdatePannel باشد ، شما باید صراحتا تعیین کنید که این کنترل Timer به عنوان اجرا کننده و آپدیت کننده کنترل UpdatePannel به صورت متناوب است .
اگر کنترل Timer بیرون کنترل UpdatePannel باشد ، دوره تناوب کنترل تایمر همزمان با شروع عملیات Postback صفحه آغاز می شود .
برای مثال اگر دوره تناوب کنترل تایمر روی 60 ثانیه تنظیم شده باشد و عمل Postback صفحه 3 ثانیه طول بکشد ، Postback بعدی دقیقا 60 ثانیه دیگر انجام می شود . بنابراین کاربر محتوی جدید صفحه را فقط برای 57  ثانیه مشاهده خواهد کرد .
در مثال زیر ، کد قرار گرفتن یک کنترل Timer بیرون از یک کنترل UpdatePannel را مشاهده می کنید :

<asp:ScriptManager runat="server" ID="ScriptManager1" />
<asp:Timer ID="Timer1" runat="server" Interval="12000" OnTick="Timer1_Tick">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
 <Triggers>
     <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
   </Triggers>
   <ContentTemplate>
     <asp:Label ID="Label1" runat="server"></asp:Label>
  </ContentTemplate>
</asp:UpdatePanel>

ارسال نظر و نظرات ثبت شده