ASP.Net de Datalist in Item Databound (Olayı) Eventinin Kullanımı

 

Merhabalar.

Bu yazıda ASP.Net  Data kontrollerinden Datalistin önemli bir Eventi  olan ItemDataBound i inceleyeceğiz. Tabi  her zamanki gibi örnek bir uygulama ile yapıyor olacağız.

 Kısaca ItemDataBound Eventinden bahsetmek istiyorum.

           

            ItemDataBound Datalist,DataRepeader, DataGrid gibi nesnelerin için geliştirilmiş bir Event dir. Örenğin Datalist ile verileri ekranda göstermek için yapmamız gereken işlem

VT den çektiğimiz ve bir Dataset ya da DataTable ye doldurğumuz verileri Datalist e bağlamak (Bind  etmek) için , yani başka bir değişle verileri göstermek için hiçbir döngü  kullanmayız.

  (   Örenğin  : Klasik ASP ya da PHP  kullanılırken veritabanından çekilen veirler bir Record Set  e aktarılır ve bir döngü ile sırayla ekrana yazdırılırdı tabi bu döngü içerisinde isteğimiz kontrol, koşul vb kontrolü yapabiliyorduk.  )

    Hemen bir senaryo kurgulayacak olursak ; misal olarak veritabanımızdan öğrenci bilgilerini çekiyor olalım. Bu bilgiler arasında öğrencinin notu da bulunuyor olsun ve notu 50 nin altında olan öğrencinin yanında kırmızı renkte  Kaldı , 50 nin üstünde olanların altın da Yeşil renkte Geçti yazdırmak isteyelim.  Eski klasik asp sisteminde yapmış olsak verileri listelerediğim döngünün içerisinde bir if kontrolü ile notunu kontrol edip isteğimiz işlemi yapabilirdik.
   Peki ASP.Net ile döngü kullanmadığımıza göre  bunu nasıl yapabiliriz? Burada ItemDataBound devreye giriyor . ItemDataBound Eventi  Veritabanından çekilen veriler ekrana basılmadan önce bu verilere  ulaşabileceğimiz son yerdir.  Şimdi yukarıda bahsettiğim örneği uygulayalım. İlka önce veritabanından verileri çekelim ve DataList e aktaralım. Bn bu örenkte SqlDatasource ile SqlServer 2005 Express daki tablodan öğrencinin isim,soyisim ve puan bilgilerini çekiyorum.  Bu bilgileri ekranda yazdırırken isim ve soyisim alanlarını direk Eval ile tablonun içine , puan bilgisini ise bir Label e yazdıralım ki Code Behind  tarafından bu labele ulaşabilelim.  

 

Defalut.aspx

<asp:DataList ID="DataList1" runat="server" CellPadding="3" DataSourceID="SqlDataSource1" OnItemDataBound="DataList1_ItemDataBound" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2" GridLines="Both">

        <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />

        <SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />

        <ItemTemplate>

        <table border="0">

            <tr>

                <td style="width: 69px; font-weight: bold; font-size: 10pt; text-decoration: none;">

                    İsim</td>

                <td style="width: 24px; font-weight: bold; font-size: 10pt; text-decoration: none;">

                </td>

                <td style="width: 100px; font-weight: bold; font-size: 10pt; color: #cc0066; text-decoration: none;">

                <%# Eval("isim") %>

                </td>

            </tr>

            <tr>

                <td style="width: 69px; font-weight: bold; font-size: 10pt;">

                    Soyisim</td>

                <td style="width: 24px; font-size: 10pt;">

        </td>

                <td style="width: 100px; font-weight: bold; font-size: 10pt; color: #cc0066; text-decoration: none;">

                 <%# Eval("soyisim") %>

                </td>

            </tr>

            <tr>

                <td style="width: 69px; font-weight: bold; font-size: 10pt; text-transform: none;">

                    puan</td>

                <td style="width: 24px; font-weight: bold; font-size: 10pt; text-transform: none;">

                </td>

                <td style="width: 100px; font-weight: bold; font-size: 10pt; text-transform: none;">

               <asp:label ID="lblPuan" runat="server" Text='<%# Eval("puan") %>' Font-Bold="True" ForeColor="#00C000"></asp:label>

                </td>

            </tr>

            <tr>

                <td colspan="3" align="center">

                    <asp:Label ID="lblDurum" runat="server" BackColor="White" Font-Bold="True" Font-Size="14px" Width="97px" BorderColor="Maroon" BorderStyle="Solid"></asp:Label></td>

            </tr>

        </table>

        </ItemTemplate>

        <ItemStyle BackColor="#FFF7E7" ForeColor="#8C4510" />

        <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />

    </asp:DataList>

 

 

SQLDatasource kontromüzü aşağıdaki gibi yapalım

 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

        SelectCommand="SELECT [isim], [soyisim], [puan] FROM [ogrenci]"></asp:SqlDataSource>

 

 

            Bu hali ile çalıştıracak olursak aşğaıdaki gibi olacaktır.

 

Item Data Bound1

Görülüdüğü gibi durum alanrımız şuanda boş . ozaman dolduralım . dataList1 in Properties penceresindeki Event alanından item databound yazan yere çift tıklayıp Code behind tarafına oluşturılan Eventin kodlarına geçelim ve şağıdaki gibi kodları ekleyelim.

 Default.aspx.cs

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)

    {

       

        if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)

            {

        Label mylabel = (Label)e.Item.FindControl("lblPuan");

        Label durum = (Label)e.Item.FindControl("lblDurum");

        int puan = Convert.ToInt32(mylabel.Text);

        if (puan < 50)

        {

            durum.Text = "Kaldı";

            durum.ForeColor = Color.Red;

 

        }

        else

        {

            durum.Text = "Geçti";

            durum.ForeColor = Color.Green;

        }

            }

    }

 

Ne yaptık ?

İlk olarak if ile Datalisteki değerin bir item ya da  AlternationItem olma koşulunu kontrol ettik şart doğru ise işlemlerimze başlıyoruz.

  Yapmılan işlem lblPuan ID li labeldeki değeri  alıp 50 ile karşılaştırmak ve kuşula göre lblDurum ID li labele Kaldı ya da Geçti yazdırmak ve Labelin  yazı rengini de ona göre değiştimek.    Form üzerindeki bir Label in text  değerine ulaşmak için  Label tipinde bir nesne örneği  oluşturuyor isim olarak da myLabel  veriliyo , sonra o anda okunan kaydı tutan e parametresinin item.Find methodu kullanılıyor ve parantez içerine ulaşılmak istenen Labelin ID si veriliyor.  Aynı şeklikde kaldı veya geçti yazıcak labelin değeride durum olarak oluşturuluyor. LblPuan nın değeği int tipinde bir değişkene atanıyor, 50 ile karşılaştırılıyor, küçük ise durum labelinin tex ve forecolor özellikleri veriliyor.  Ve bitti....

 

Ekaran çıktısının son hali .

 

Item Data Bound2 

 

Kolay Gelsin.

 

Uygulamayı buradan indirebilirsiniz

 

 

 

Bunu beğen
Paylaş

Yorumlar
Yorum Yaz
İsim : (*)
E-mail :
Web Adresi:
:
(*)
 
Kapat