Asp.Net projelerinde, veriyi getirmenin yollarindan biri de DataList kontoludur. Daha once Repeater uzerinden gecmistik. Mantik olarak bir farki yok, yine bu da veri getirecek, yine templateleri olacak. Fakat DataList'in bize kattigi en buyuk yenilik Template'leri Repeater'daki gibi source kisminda elle yazmak zorunda olmamamiz. Ayrica yine ekstradan iki template'imiz daha olacak fakat, kisaca DataList hakkinda ufak notlar yazalim buraya.
Yine her Data Bound kontrollerinde oldugu gibi DataListte de sag ust kosede smart tagimiz var. Bu smart tagi tikladigimiz zaman bize bazi ozellikler sunuyor. Nedir bunlar, datasource kaynagini gosterme, veya paging, sorting gibi ozellikleri aktif etme, veya bazi kontroller icin veri ekleme ve EditTemplates ozelligi. Iste bu ozellik sayesinde Templatelerimize elle mudahele yapabiliyor olacagiz. TextBox eklemek istersek, surukle birak sayesinde ItemTemplate icerisine surukleyebilecegiz. Repeater'da olsa source kisminda elle olusturmamiz gerekecekti. Kontrollere bu kadar erisme konusunda hakim oldugumuzdan DataList'in kullanilabilirligi daha ust seviyeye cikiyor boylece. Template'leri kisaca anlatmayacagim, sadece asagi goruntuyu incelersek zaten her sey biraz daha netlesicek sanirim.
EditItemTemplate: DataList'in repeater'dan farkli olarak bizlere sundugu template'dir. Adindan da anlasilacagi uzere, degisiklik yapma firsati tanir bize. Yukaridaki ItemTemplate'e gore, diyelim kiDuzenle butonuna basinca, lablellar textbox'a donussun ve urun kayitlarini update edelim. (id haric tabiki). EditItemTemplate'e gelip, duzenle butonuna tiklayinca nasil bir goruntu istiyorsak, onu kontrolleri surukle birakla yontemiyle olusturuyoruz.
Burda bilmemiz gereken bir ozellik de, bu ornek icin guncelle butonuna basinca textboxlardaki degerlere gore yeni verikaydi olusturacak. Yani verileri yeni degerleriyle guncelleyecek. Bunun icin Guncelle butonunun click eventini tetiklememiz gerekecek. Iste bunun icin EditItemTemplate bize, bazi event secenekleri vermis. Properties'e gelip bakarsak orda CommandName isimli bir ozellik goruruz. Buna gore CommandName ozelligine Update yazarsak, ve DataList'in properties ozelliklerinden UpdateCommand eventini tetiklersek direk butona tiklaninca yazmak istedigimi kodlari yazarak istedigimiz senaryoyu gerceklestirmis oluruz. Ayni durum veri ekleme(InsertCommand), veri silme(DeleteCommand), vazgecmek icin(CancelCommand) eventleri icin de gecerlidir.