Repater kullanarak kayıt listeleme


   Merhaba gençler bu örneğimizde Repeater nesnesi ile veritabanımızdaki öğrenciler tablosundaki kayıtları listelemeyi öğreniyoruz. Daha önce sizlerle GridView ve AccessDataSource nesnelerini kullanarak kayıtları listelem işini yapmış idik fakat buradaki en büyük kısıtlama GridView nesnesinin verileri etikietini kullanarak listeliyor olması idi. Biliyorsunuz ki bir çok tema etiketleri kullanılarak tasarlanıyor ki farklı cihazlar ve web gözatıcıları ile izlendiklerinde tasarlanan görüntü bozulmasın. Bu durumda bizlerin de verilerimizi listelerken istediğimiz HTML nesnelerini kullanarak işlem yapabilmemiz gerekiyor ki tam bu noktada Repeater nesnesi karşımıza çıkıyor. Unutmayın Repetaer nesnesini kullanmamızın nedeni C# ile kod yazmadan verileri istediğimiz etiketleri kullanarak listeyebilmek. Son tahlilde aşağıdaki gibi bir görüntü oluşturarak nesnelerinden oluşan kimlik kartları görüntüsü almak istiyoruz bunun içinde Repeater nesnesi kullanıyoruz.


Burada dikkat edeceğiniz çok basit kurallar var:
  1. Sayfanıza bir AccessDataSource nesnesi ekliyor ve veritabanınıza bağlantı ayarlarını sihirbazı kullanarak derslerde yaptığımız gibir gerçekleştiriyorsunuz
  2. Sayfanıza bir Repeater nesnesi ekleyerek DataSourceID özelliğini eklediğiniz AccessDataSource nesnesinin ID si olarak ayarlıyorsunuz
  3. Sonrasında da örneğimizde verdiğimiz gibi Repeater nesnesinin etiketlerinin arasında istediğiniz HTML etiketlerini yazabiliyorsunuz.
  4. Burada dikkat edilecek husus; eval() ile Bind() temelde ayni islemi yapar tek farkla veriler uzerinde guncelleme vb. islemler yapilacaksa Bind() kullanilmalidir,  verileri uzerinde guncelleme, silme, ekleme vb. işlemler yapilacaksa eval() kullanılmaz.   '<%# Eval("alanAdi") %>' '<% # Bind("alanAdi") %>' şeklinde kullanilirlar. Çift/Tek tırnak durumu onemlidir bu durum yani birini  digerini yerine kullanma Bind() için sorun olmaz ama Eval() icin sorun olusturur.
  5. Son olarak sizlere yenilik olsun amacı ile " web sayfamızda belirli bir alanı yazıcıya nasıl gönderebiliriz?" sorusuna cevap olsun diye bir de javascript kod yazdım. Bu kodun doğru bir biçimde çalışabilmesi kayıt listelemenin doğru yapılması gerekiyor yani yazdırılmak istenen her bir alana tek/benzersiz bir ID vermek gerekiyor.
  6. Hadi bakalım yine iyisiniz, yazmaya gerek kalmadı :)
    <script type="text/javascript" language="javascript">
        function yazdir(id) {
            //////////////////////////////////////////////////////////////////////////////////////////////
            // Kodlama          : Bilal SERT
            // Tarih-Saat       : 30.03.2010 | 10:30
            // Amaç             : Belirli bir HTML icerigi yaziciya gondermek
            // G/Ç              : Yaziciya gonderilecek div nesnesini id' si girdi olarak alinyor / Yok
            //////////////////////////////////////////////////////////////////////////////////////////////
            var nesne = document.getElementById("data" + id).innerHTML;
            var sayfaninKodu = document.body.innerHTML;
            //Yazdirma alanini ayarlayalim
            document.body.innerHTML = "< body >< div class='veriAlani' >" + nesne + "< / div >< / body >";
            //Sayfayi yazdiralim
            window.print();
            //Orjinal icerigi geri yukleyelim
            document.body.innerHTML = sayfaninKodu;
        }
    </script>