Aylık arşivler: Ocak 2003

DataGrid Web Kontrolu1

Asp ile yapilan uygulamalarda en sik karsilasilan uygulamalarin basinda veritabaninda bulunan tablo halindeki verileri alip bunu HTML tablosu olarak göstermektir. Klasik Asp ile bunu yapabilmek için birçok karmasik kod yazmaniz gerekmekteydi. ASP.NET’in bir avantajida içinde bir çok web kontrolünü barindirmasidir. Bu web kontrolleri HTML sunmak ve gelistiricilerin kod ile içerigi birbirlerinden ayirabilmesi için programlanabilir bir arabirim saglamaktadir. Eger ASP.NET kullanarak bir HTML çiktisi almak istiyorsak.

<script language="vb" runat="server">
         sub Page_Load(sender as Object, e as EventArgs)
         lblMessage.Text = "Hello, World!" end sub
</script>
<asp:label runat="server" id="lblMessage" />

Burada “lblMessage” label Web kontrolünün HTML-benzeri taglar ve runat=”server” özelligi kullanilarak HTML içerisine yerlestirildigini görüyoruz. Page_Load event handler’i ise (sayfanin her yüklenmesinde çalisir) lblMessage Web Kontrolünün text özelligine “Hello World!” yazisini yazdirir. Bu sekide Web kontrollerinin kullanarak kod ile içerigi birbirinden ayirmaktayiz. Klasik ASP ‘de bunu yapabilmek için <%="Hello, World!"%> kodunu HTML içinde gerekli yere eklememiz gerekiyordu. Görüldügü gibi ASP.NET Web kontrolleri basit label kontrolünden daha kullanisli ve güçlü. Ayrintili olarak inceleyecegimiz DataGrid Web kontrolü ise web kontrollerinin en güçlülerinden biri. DataGrid bize veri-dolu HTML tablolari olusturmak için gerekli HTML çiktisini sunar. Ileride göreceginiz gibi DataGrid’e veri baglamak gerçekten çok kolaydir. Ayrica sadece birkaç ufak ayarlama ile DataGrid’lerin görünüslerini profesyonel HTML tablolari halinde sunabilirsiniz.

DataGrid Temelleri

DataGrid’i ASP.NET web sayfasina yerlestirmek için asagidaki kodu sayfaniza eklemeniz gerekmektedir.

<asp:datagrid runat="server" id="ID_of_DataGrid" />

Burada id DataGrid’e server-side kod yazarken ulasacaginiz ismidir. Yukaridaki sentaks DataGrid’i HTML içerigine yerlestirmek için kullanilmakta, fakat bizim esas ihtiyacimiz olan DataGrid’e herhangi bir grup bilgiyi baglayarak daha kullanisli bir sekilde göstermek. Peki, DataGrid’e bu bilgiyi nasil baglayacagiz? Bu inanamayacaginiz kadar kolay. Ilk yapmamiz gereken içinde veritabanindan çekilmis veriler bulunduran bir DataReader yakalamak. Bu örnek için SQL server ile gelen Pubs veritabanini kullanacagiz. Birkere DataReader’a gerekli olan verileri attiktan sonra, DataGrid’e bu verileri baglamak için iki satir kod eklememiz yeterli; Ilk satir DataGrid’ in DataSource özelligine DataReader’i atamak; ikincisi ise DataGrid’in DataBind() metodunu çagirmak. Hepsi bukadar, asagidaki kodda bunu ayrintili olarak görebilirsiniz.

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %> <SCRIPT language="VB" runat="Server">
Sub Page_Load(Src As Object, E As EventArgs)
Dim dr As SQLDataReader
Dim conn As SQLConnection
Dim cmdAuthors As SqlCommand

'Pubs veritabanina bir baglanti kuruyoruz
conn = New SQLConnection _
("server=localhost;uid=sa;pwd=1Aspnet;database=pubs")
conn.Open()
'Authors tablosundaki verileri içeren bir dataset olusturuyoruz’
cmdAuthors = New SqlCommand _
("select * from Authors", conn)
dr = cmdAuthors.ExecuteReader

'DataGrid’in datasource’na datareader’i baglayalim
dgAuthors.DataSource = dr
'DataGrid’in databind() methodunu çagiralim.
dgAuthors.DataBind()
conn.Close()
End Sub
</SCRIPT>

 

<ASP:DataGrid id="dgAuthors" runat="server"/>

Yukaridaki örnekte ilk olarak bir database baglantisi açip SQL komutunu çalistiriyoruz, DataGrid’in DataSource özelligini verileri barindiran DataReader’a bagliyoruz ve son olarak DataBind metodunu çagiriyoruz. Bu sekilde bütün kodu içerikten izole etmis oluyoruz; klasik ASP sayfalarinda karsilastigimiz, HTML tablosu ile DataReader çikti sentaksi arasinda hiçbir karisim olmuyor.