Asp'de Timer ve Triggers kullanarak Repeater Tetikleme

Muhammet Ali
15 Kasım 2015 Pazar
0

Asp projelerimizde en sık kullandığımız yapılardan biri repeater dır.Veritabanımızdan istediğimiz verileri repeaterımıza source vererek verileri yazdırmak için kullanırız.

Şöyle bir kurgu düşünelim.İki farklı birbirleri ile ilişkili panelimiz var.Örneğin A panelinde bir değişiklik yaptık bunu B panelinde görmek istiyoruz.Bu değişikliği B panelinde görmek için sayfayı Postback ettirmemiz gerekiyor.(Sayfayı yenilemek).Ancak bu şekilde veriyi B paneline düşürebiliriz,yoksa veriyi B paneli göremeyecektir.İşte bunu belli zaman aralıklarında arka planda yapmak repeaterı tetiklemek için timer kullanıcağız.Ve Triggers ilede update panelimizi tetikliyeceğiz.

Asp kısmı aşağıdaki gibidir.Dikkat edilecek kısım repeaterımız updatepanel içinde olmalı ve Timer nesnemizde OnTick özelliği olmalı.

<asp:updatepanel runat="server" xmlns:asp="#unknown">
         <contenttemplate>
           <asp:timer id="Timer1" runat="server" interval="1000" ontick="Timer1_Tick"></asp:timer>
 
          <asp:repeater runat="server" id="rprepeater">
             <itemtemplate>

               <asp:label id="Label3" runat="server" text="<%#Eval("Ad") %>" visible="False">
                   </asp:label>

                </itemtemplate>
             </asp:repeater>
           </contenttemplate>
                    <triggers>
                       <asp:asyncpostbacktrigger controlid="Timer1" eventname="Tick" />
                    </triggers>
  </asp:updatepanel>

Code behind kısmı ise şu şekilde;

 protected void Timer1_Tick(object sender, EventArgs e)
        {
            
            rprepeater.DataSource = ...;
            rprepeater.DataBind();
        }

 

En önemli husulardan biride eğer başka biyerdede update panel kullanıyor iseniz bu timer onuda tetikliyecektir.Bunu engellemek için  update panellerimize UpdateMode="Conditional" eklememiz gerekiyor.Bunu eklediğimiz updatepanel timerdan etkilenmiyecetir.

İyi Çalışmalar.

 



Yorum yaz