نمایش نتایج 1 تا 4 از 4

نام تاپیک: بروز رسانی UpdatePanel با استفاده از Timer - سطح مبتدی

  1. #1

    بروز رسانی UpdatePanel با استفاده از Timer - سطح مبتدی

    سلام ,

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

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

    اینکار به سادگی هر چه تمام با Timer و Update Panel امکان پذیر است .

    در اینجا یک مثال ساده رو دنبال میکنیم :

    یک ScriptManger و یک UpdatePanel در روی فرم قرار دهید
    خاصیت EnablePartialRendering از ScriptManger را برابر True قرار دهید .
    خاصیت UpdaeMode از UpdatePanel را برابر Conditional قرار دهید
    داخل ContentTemplate از UpdatePanel یک Lable و یک Timer قرار دهید

    تا الان MarkUP صفحه aspx شما باید به شکل زیر باشد :

    <body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
    <asp:Timer ID="timer1" runat="server" />
    <br />
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </ContentTemplate>
    </asp:UpdatePanel>
    </div>
    </form>
    </body>


    حال بر روی Timer1 دابل کلید کنید و در رویداد Timer1_click اینطور بنویسید:
     protected void timer1_Tick(object sender, EventArgs e)
    {
    RefreshTheZone();
    UpdatePanel1.Update();
    }

    private void RefreshTheZone()
    {
    Label1.Text = System.DateTime.Now.ToString();
    }


    در واقع ما یک متد رو فراخوانی کردیم که در اون متد تاریخ جاری سیستم رو در یک Lable نمایش میده و متد Update از UpdatePanel رو فراخوانی میکنه .

    برای اینکه این متد هر 5 ثانیه یکبار تکرار شود , خاصیت Interval از Timer رو برابر 5000 ست میکنیم ( 50000 میلی ثانیه ) .

    تنها کاری که باقیمانده باید یک Trigger از نوع AsyncPostBackTrigger برای UpdatePanel بنویسیم :

    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="timer1" EventName="Tick" />
    </Triggers>


    حال اگر صفحه را Run کنیم , مشاهده میکنیم که هر 5 ثانیه یکبار بدون PostBack تاریخ سیستم بروز میشود .

    هدف ما در اینجا نحوه استفاده از از کنترلهای Timer و UpdatePanel بود وگرنه هیچ کار مفیدی نکردیم .

    برای اینکه همه کد رو یکجا داشته باشید من اینجا به صورت کامل میزارم :

    صفحه aspx:

    <body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="timer1" EventName="Tick" />
    </Triggers>
    <ContentTemplate>
    <asp:Timer ID="timer1" runat="server" Interval="5000" ontick="timer1_Tick" />
    <br />
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:Timer ID="Timer2" runat="server">
    </asp:Timer>
    </ContentTemplate>
    </asp:UpdatePanel>
    </div>
    </form>
    </body>


    و صفحه aspx.cs :

    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    Label1.Text = System.DateTime.Now.ToString();
    }

    protected void timer1_Tick(object sender, EventArgs e)
    {
    RefreshTheZone();
    UpdatePanel1.Update();
    }

    private void RefreshTheZone()
    {
    Label1.Text = System.DateTime.Now.ToString();
    }


    سربلند باشید

  2. #2

    نقل قول: بروز رسانی UpdatePanel با استفاده از Timer - سطح مبتدی

    سلام

    با تشكر از شما جناب Mostafa_Dindar

    من يه سري سوال برام پيش اومده.


    1. تك Trigger چه كار مي كنه؟ يعني در پشت صحنه چه اتفاقي رخ ميده؟
    2. اين سوالم كمي مسخره هست: چرا نوشتيد if(!IsPostBack)؟؟
    3. اين سوالم مربوط به اين خاصیت UpdaeMode از UpdatePanel هست كه برابر Conditional قرار داده شد. اين خاصيت چي هست و هر كدوم از مقادير چه كاري انجام مي دن؟

    مرسي از آموزش مفيدتون

  3. #3

    نقل قول: بروز رسانی UpdatePanel با استفاده از Timer - سطح مبتدی

    نقل قول نوشته شده توسط obalitjoOon مشاهده تاپیک

    1. تك Trigger چه كار مي كنه؟ يعني در پشت صحنه چه اتفاقي رخ ميده؟
    2. اين سوالم كمي مسخره هست: چرا نوشتيد if(!IsPostBack)؟؟
    3. اين سوالم مربوط به اين خاصیت UpdaeMode از UpdatePanel هست كه برابر Conditional قرار داده شد. اين خاصيت چي هست و هر كدوم از مقادير چه كاري انجام مي دن؟
    سلام , خواهش میکنم .

    1- به طور پیش فرض هر کنترلی که داخل UpdatePanel باشد باعث AsyncPostBackTrigger میشه .

    در صورتی که بخواهیم بیرون از UpdatePanel باعث یک PostBack بشیم باید از Trigger کمک بگیریم .
    2 مدل Trigger داریم

    AsyncPostBackTrigger که تنها قسمت UpdatePanel سمت سرور میرود و بروز میشود
    PostBackTrigger که باعث میشود تمام صفحه سمت سرور رفته و بروز شود

    2- خواستیم تنها دفعه اول که صفحه لود میشود , تاریخ جاری سیستم رو نمایش دهیم . در واقع هرگاه خواسته باشیم یک کد تنها یک بار و اونهم دفعه اول که صفحه لود میشود اجرا شود , اون شرط رو پیش از اون مینویسیم .

    3-UpdateMode دارای 2 مقدار هست :
    Always : یعنی هر کنترلی که درون UpdatePanel هست رویداد ServerSide اون Fire شد PostBack صورت گیرد .

    Conditional : یعنی خاصیت قبلی را لغو کند و Update تنها بر اساس Trigger ها صورت گیرد .


    سربلند باشید

  4. #4
    کاربر دائمی آواتار BookWorm
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    103

    نقل قول: بروز رسانی UpdatePanel با استفاده از Timer - سطح مبتدی

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

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •