Datagrid
Üyelik sistemi ile çalışan bir sitede, klasik ASP ve ADO'nun sunduklarını kullanarak,
tüm üyelerin listesini veren bir sayfa hazırlamak çok zaman alır. Bu iş için, belli
sayıda kayıtın veritabanından alınıp, belirlenmiş bir formatta gösterilmesi gerekir.
Veritabanında kayıtlı olan üye sayısının, web programcısının belirlediği sayfa boyutuna
göre kaç sayfada gösterilmesi gerektiği hesaplanır.
Ziyaretçinin seçtiği sayfaya denk gelen aralıktaki kayıtlar yine aynı formatla görüntülenir.
Tablonun kolay okunabilir olması açısından her kayıta ait hücre veya satırın rengi
değişik olabilir. Örneğin; hücre veya satırın arka plan rengi birinci kayıtta açık
mavi, ikinci kayıtta daha açık mavi olur. Üçüncü kayıtta ise yeniden açık mavi kullanılır.
İki değerli bu döngü gösterilecek olan tüm kayıtlar için tekrarlanır.
Yine aynı mantıkla, ziyaretçinin tabloyu daha kolay okuyabilmesi ve sayfanın daha
güzel görünmesi için başka ayrıntılara da girilebilir. Ancak klasik ASP ve ADO bunları
yapmak için programcıya ekstra kolaylık sağlamaz. Programcı, türlü algoritmalar
kurup uzun bir kod yazar. Daldan dala atlayan, bazen de takla atan bir kod çıkar
ortaya..
DataGrid Web Kontrolü
Çok geniş bir kaynak olan web kontrolleri, statik veya dinamik çalışabilen, programatik
olarak ulaşıp değeri değiştirilebilen, hatta yine programatik olarak oluşturulabilen
HTML'dekine benzer input kontrollerinin yanında, gelişmiş kontrolleri (Rich Web Controls)
de içerir.
DataGrid, DataList ve DataRepeater, veri kaynağından çekilen
veriyi belirlenen formatta görüntüleyen gelişmiş web kontrolleridir. DataGrid ise
bu ailenin en güçlü üyesidir.
ASP.NET'ten önce sadece Visual Basic gibi görsel programlama ortamlarında kullanılabilen
DataGrid, .NET ile birlikte web programcısının da kullanabileceği bir şekle büründü.
DataGrid kontrolü, veri kaynağındaki alanları bir tablonun sütunları olarak gösterir.
Veri kaynağından çekilen her kayıt, tabloda bir satırda gösterilir.
Veriyi çok basit bir şekilde tabloya dökebilen DataGrid kontrolü, klasik ASP'de
farklı algoritmalar kurarak uzun kodların yazılmasıyla yapılabilen sayfalama (paging)
işlemini de yapabilme yeteneğine sahiptir.
DataGrid, sayfalama desteğinin yanında sıralama (sorting), seçme (selecting),
düzenleme (editing) ve silme (deleting) işlemlerine de destek verir.
Böylece bu kontrolü kullanarak basit bir yönetici paneli oluşturmak çok kolaydır.
AutoGenerateColumns özelliğinin değerini False olarak belirleyerek, veri
kaynağındaki tüm alanların görüntülenmesi engellenebilir. Sütun başlığı olarak veri
kaynağındaki alanların isminin değil, bizim belirleyeceğimiz değerlerin kullanılması
sağlanabilir.
Şimdi ayrıntısına girmeden basit bir DataGrid örneği vereceğim. Veri kaynağı olarak
kullanacağım Microsoft Access veritabanına ADO.NET ile bağlanacağım. Veritabanındaki
tek tablonun tüm kayıtlarının DataGrid ile tabloya dökülmesini sağlayacağım.
Örnek DataGrid kullanımı
DataGrid kontrolünü kullanmak için <asp:DataGrid id="DataGrid1" runat="server"/>
kodu kullanılır. Bu kısacık kod, çalıştırıldığında server tarafından HTML tabloya
dönüştürülür. Veri kaynağındaki her kayıt DataGrid'deki bir satıra denk gelir. Veri
kaynağındaki alanların isimleri, DataGrid'in sayfaya bastığı tablonun sütunlarının
başlığı olarak görüntülenir.
Böylece veri kaynağına bağlanmak ve çekilen veriyi bir Dataset'e aldıktan sonra
bu DataSet'i DataGrid ''e yüklemek (DataBind) yeterli olur. Alanların isimlerini
bilmeye gerek yoktur. Tablonun HTML kodunu programcı yerine sunucu yazar.
DataGridOrnegi1.aspx
|
<%@ Page Language="VB" Debug="True" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <html><head><title> DataGrid kontrolü </title></head><body> <script runat="server"> Sub Page_Load(Source As Object, E As EventArgs) If Not IsPostBack Then Dim conn As New OleDbConnection(connstr) Dim adapter As New OleDbDataAdapter(sql,conn) dgKisiler.DataSource = ds.Tables("kisiler_tablosu") conn.close() End Sub </script> <asp:DataGrid id="dgKisiler" runat="server"/> </body> |
DataGridOrnegi1.aspx

Kullandığımız koda kısaca bakalım. Sayfanın başında, ADO.NET kullanacağımız için
System.Data ve System.Data.OleDb aduzaylarını kodumuza dahil ettik. Page_Load olayı
içerisinde, ilk olarak bağlantı cümlesini ve sql cümlesini oluşturduk. New() yapılandırıcısı
(constructor) ile conn isminde bir OleDbConnection nesnesi oluşturduk ve bağlantı
cümlesini parametre olarak kullandık.
Ardından yine New() yapılandırıcısı ile adapter isminde bir OleDbDataAdapter nesnesi
oluştururken sql cümlesini ve az önce oluşturduğumuz OleDbConnection nesnesini parametre
olarak kullandık. Bu işlemden sonra New() yapılandırıcısı ile bir Dataset nesnesi
oluşturup, OleDbDataAdapter nesnesinin Fill metodunu kullanarak bu Dataset nesnesindeki
ismini kendimiz belirlediğimiz "kisiler_tablosu" isimli tabloya sorgu sonucu dönen
veriyi doldurduk.
Veri kaynağındaki tablo ismi ile Dataset nesnesindeki tablonun isminin aynı olması
gerekmez.
Son olarak, dgKisiler isimli DataGrid kontrolünün DataSource özelliğine, Dataset
nesnesinin "kisiler_tablosu" isimli tablosunu gösterdik. Ardından yine DataGrid
kontrolünün DataBind() metodunu çalıştırıp Page_Load sub'ını kapatmadan OleDbConnection
nesnemizin close() metodu ile veritabanı bağlantısını sonlandırdık.
Sonuç
DataGrid çok güçlü ve kapsamlı bir kontrol olduğu için bu makalede en basit halini
gösterdim. Sayfalama, sıralama, düzenleme işlemleri daha ileriki makalelerimizin
konusu olacak. Ayrıca istenen alanların gösterilmesi, sütunların başlıklarının programcı
tarafından belirlenmesi ve her satırın farklı renkde olması gibi özellikleri de
işleyeceğiz.