ItemDataBound Olayı

Eyl 06, 2013

Repeater kontrolünde verilerin belli bir sıraya ya da kurala göre görüntülenmesi için kontrolün ItemDataBound olayı kullanılır. Bu olay verilere tek tek erişilmesini sağlar. Verilerin ekrana yazdırılmadan önceki son kontrol noktasıdır.

Uygulama

Aşağıdaki  tasarım kodu parçası, aspx uzantılı bir sayfada çeşitli kitap bilgilerini tutan bir veritabanından istenen verileri elde etmek üzere oluşturulmuştur. Bu kodda verileri çekmek için etiketler(label) kullanılmıştır.

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <h2>Kitap Bilgileri </h2>
       <asp:Repeater ID="rpCeviri" OnItemDataBound="rpCeviri_ItemDataBound"
           runat="server">
             <ItemTemplate>  
                  <table>         
                      <tr>
                         <td><asp:Label ID="lbAd" Font-Bold="true" runat="server" 
                                      Text='<%# Eval("ad") %>'></asp:Label></td>
                      </tr>
                      <tr> 
                         <td><asp:Label ID="lbYazar" runat="server"
                                      Text='<%#Eval("Yazar.AdSoyad") %>'></asp:Label></td>
                      </tr>                                              
                  </table>                      
            </ItemTemplate> 
            <SeparatorTemplate> 
                <br />           
            </SeparatorTemplate> 
       </asp:Repeater> 
       <br /><br /><br /> 
       <table> 
          <tr style="font-size:x-large"> 
             <td style="color:#d8bfd8">  Roman  </td> 
             <td>     -     </td> 
             <td style="color:#9acd32">  Şiir  </td> 
             <td>     -     </td> 
             <td style="color:#6495ed">  Masal  </td> 
           </tr> 
        </table>
</asp:Content>

Kitapların ad, yazar ve tür özellikleri belirtilip, kitapların türüne göre renklendirme yapılarak gruplandırma yapılmıştır. Örnekte “şiir”, ”roman” ve “masal” olmak üzere 3 tür bulunmaktadır. Bu aşamada ItemDatabound olayıyla projenin .cs uzantılı kod tarafında her bir kitabın türü kontrol edilebilir. 

public partial class KitapGoruntuleme : BasePage{
    protected void Page_Load(object sender, EventArgs e)
    {
         rpCeviri.DataSource = KitapDukkani.Kitap;
         rpCeviri.DataBind();   
    } 

    protected void rpCeviri_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || 
            e.Item.ItemType == ListItemType.AlternatingItem)
        {
             Label lblAd = e.Item.FindControl("lbAd") as Label;
             Kitap kitap = e.Item.DataItem as Kitap;

             if (lblAd != null && kitap != null)
             {
                if (kitap.Tur.KitapTuru == "şiir")
                {
                    lblAd.BackColor = Color.YellowGreen;
                } 
                    else if (kitap.Tur.KitapTuru == "roman") 
                    {
                          lblAd.BackColor = Color.Thistle;
                    } 
                         else
                         {
                               lblAd.BackColor = Color.LightBlue;
                         } 
              }             
        }  
    } 

Bu uygulama çalıştırılırsa aşağıdaki gibi bir çıktı elde edilir.