|  | 
        
            | 
                    
                        | ASP.NET Veri Bağlama |  |  
                        | 
	
    
		
            | Gönderiliyor lütfen bekleyin... | 
 |  | 
        
            | Veri Bağlama Nedir, Basit Kontrollere Nasıl Yapılır? 
 Klasik ASP uygulamalarında, belirli bir kaynakta saklanan 
			verilerin kullanıcıya sunulması, veritabanına bir bağlantı açılıp bu bağlantı 
			aracılığı ile istenilen verilerin “RecordSet” nesnelerine alınması ve bir döngü 
			içerisinde ekrana yazdırılması işlemlerinin adım adım gerçekleştirilmesi sonucu 
			tamamlanmaktadır. Eğer okunan kayıtların yine kullanıcılar tarafindan 
			degiştirilmesine izin verilecek ise, geliştiriciler güncelleme ile ilgili 
			adımları da kodlamak zorundadırlar.
 
 ASP.NET teknolojisinde ise veri sunumu, güncellenmesi, veri 
			sıralanmasi gibi niteliklere sahip farklı kontrollerin (tekrarlanan verileri 
			HTML biçiminde sunan kontroller) kullanılmasi ile, belirli kaynaklarda bulunan 
			verilerin kullanıcıya sunulması ve bu verilerin güncellenebilmesi işlemleri 
			kolaylaştırılmıştır. Böylelikle yazılım geliştiriciler gereksiz detaylarla 
			ugrasmak zorunda kalmamakta, yoğunluklarini iş mantığı geliştirmesine 
			kaydırabilmekte, daha okunabilir ve kaliteli yazılımlar 
			geliştirebilmektedirler.
 
 ASP.NET teknolojisinde ise veri sunumu, güncellenmesi, veri sıralanması gibi 
			niteliklere sahip farklı kontrollerin (tekrarlanan verileri HTML biçiminde 
			sunan kontroller) kullanılması ile, belirli kaynaklarda bulunan verilerin 
			kullanıcıya sunulması ve bu verilerin güncellenebilmesi işlemleri 
			kolaylaştırılmıştır. Böylelikle yazılım geliştiriciler gereksiz detaylarla 
			uğraşmak zorunda kalmamakta, yoğunluklarını iş mantığı geliştirmesine 
			kaydırabilmekte, daha okunabilir ve kaliteli yazılımlar 
			geliştirebilmektedirler.
 
 Yukarıdaki paragrafta bahsedilen kontroller “DataRepeater”, “DataList” ve 
			“DataGrid” kontrolleridir. Üç kontrolde de “header template”, “item template” 
			ve “footer template” bölümleri bulunmaktadır. Yazılım geliştiriciler bu 
			bölümler içerisinde yapacakları değişiklikler ile kontrolleri 
			özelleştirebilmektedirler (“template” kullanımları kod örnekleri ile daha net 
			anlaşılacaktır). Adlarından da anlaşılacağı üzere “header” ve “footer” 
			kalıpları (“template”) baş ve son kısımları kontrol etmektedir, “item” kalıbı 
			ise tekrarlanan veriyi yönetmektedir. “DataGrid” kontrolünde “item template” 
			sütunlara karşılık gelmektedir. Üç kontrolün birbirleri ile temel farkları 
			incelenirse; “DataGrid” ve “DataList” kontrolleri veriyi güncelleme yeteneğine 
			sahiptirler, “DataRepeater” bu yeteneğe sahip değildir. “DataGrid” i “DataList” 
			ten farklılaştıran özellikler ise sayfalama ve sıralamadır.
 
 Kontrollere Veri Atanması
		“CheckBoxList”, “RadioButtonList”, “ListBox” ve “DropDownList” 
  gibi kontrolleri “DataSet” (veri taşıyan nesne) nesneleri ile bağlayabiliriz. 
  Burada bağlamak kelimesi ile kast edilen, “DataSet” nesnelerinde saklanan verinin 
  ilgili kontrollerde sunulmasıdır. Bağlama işlemi kabaca, veri kaynağının belirlenmesi 
  ve “DataBind” metodunun kullanılarak kontrole atanması adımlarından oluşmaktadır. 
  Aşağıdaki örnekte “ListBox”, “DropDownList” ve “RadioButtonList” nesnelerinin 
  “Groups” tablosundaki veriler ile nasıl ilişkilendirildiği (bağlandığı) anlatılmaktadır.
 
 DataBind.aspx .cs
 
 
 
			Kod 1: DataBind.aspx .cs (Code Behind )
				| OleDbConnection myConnection; OleDbDataAdapter myDataAdapter;
 DataSet ds = new DataSet();
 string strConn="";
 string strSQL="";
 private void Page_Load(object sender, System.EventArgs e)
 {
 strConn = "Provider=SQLOLEDB; Data Source=(local); 
						Initial Catalog=ASPNET;User ID=sa;";
 
 /* Veri kaynagini tanitan 
        baglanti cümlesi yukaridaki kod satiri ile tanimlanmakta
 ve asagidaki satir ile baglanti nesnesi yaratilmaktadir. 
        */
 
 if (!Page.IsPostBack)
 BindData();
 }
 
 public void BindData()
 {
 strSQL = "Select * from Groups";
 myDataAdapter = new OleDbDataAdapter(strSQL, myConnection);
 
 // "Fill" metodu 
        ile "DataSet" nesnesi doldurulmaktadir
 myDataAdapter.Fill(ds, "Groups");
 
 /* "List1" isimli 
        "ListBox" nesnesi ile veriler asagidaki
 kod satirlari ile baglanmaktadir 
        */
 List1.DataSource=ds.Tables["Groups"].DefaultView;
 List1.DataBind();
 
 /* "rb" isimli "RadioButtonList" 
        nesnesi ile veriler asagidaki
 kod satirlari ile baglanmaktadir 
        */
 rb.DataSource=ds.Tables["Groups"].DefaultView;
 rb.DataBind();
 
 /* "dl" isimli 
        "DropDownList" nesnesi ile veriler asagidaki
 kod satirlari ile baglanmaktadir 
        */
 dl.DataSource=ds.Tables["Groups"].DefaultView;
 dl.DataBind();
 }
 
 public void SubmitBtn_Click(object sender, EventArgs e )
 {
 string s="";
 
 s = s + "----Selected DropDownList : " + 
						dl.SelectedItem.Text;
 Label1.Text = s;
 }
 
 
 |  
 DataBind.aspx
 
 
 
			Kod 2: DataBinding.aspx
				| <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" 
        AutoEventWireup="false" Inherits="DataBinding_Makale.WebForm1" %> 
 <HTML>
 <body>
 <h3><font 
						face="Verdana">Binding Controls </font> </h3>
 
 <form 
						runat="server">
 <asp:ListBox 
						id="List1" DataTextField="code_display" DataValueField="code_value" 
						runat="server" />
 <hr>
 
 <!-- 
        "CheckBoxList" ve "RadioButtonList" kontrollerinin 
        "RepeatColumn" ve
 "RepeatDirection" 
        isimli özellikleri bulunmaktadir. "RepeatColums" ile
 belirtilen 
        yönde kaç sütun olacagi ’tanimlanmaktadir.
 -->
 
 <ASP:radiobuttonList 
						repeatcolumns="4" repeatdirection="horizontal" repeatlayout="table" id="rb" 
						datatextfield="code_display"
 DataValueField="code_value" 
						runat="server" />
 <hr>
 <asp:DropDownList 
						id="dl" DataTextField="code_display" DataValueField="code_value" runat="server" 
						/>
 <hr>
 <asp:button 
						Text="Submit" OnClick="SubmitBtn_Click" runat="server" id="Button1" />
 <asp:Label 
						id="Label1" font-name="Verdana" font-size="10pt" runat="server" />
 </form>
 </body>
 </HTML>
 
 
 |  
 DataRepeater Genel Yapı ve Kod Örneği (Seride Makale 2)
 
 Genel Yapı
 
 “DataRepeater”, yinelenen verileri HTML biçiminde sunmak için 
			kullanılan kontroldür. Amaç verilerin kullanıcıya sunulmasıdır, verinin 
			güncellenmesi gibi özellikler bu kontrol tarafından desteklenmemektedir. 
			Kontrolün genel yapısı aşağıdaki gibidir.
 
			Kod 3: Repeater genel yapı 
Veriye bağlanabilen “template” ler “Item ve 
  AlternatingItem Template” leridir. Diğerleri veriye bağlanamamaktadır. Eğer 
  kullanılan veri kaynağından veri alınamazsa, sadece “Header” ve “Footer” “Template” 
  lerideki HTML içerik görüntülenmektedir.
				| <asp:Repeater id="Repeater1" DataSource="<% databindingexpression %>"
 runat=server>
					
						     <HeaderTemplate>
 <!-- Veriye 
        bagli satirlar yazdirilmadan önce sadece bir kez yer almasi gereken “tag” 
        ler burada tanimlanmalidir. Örn: <table>
 Header template 
        HTML -->
 </HeaderTemplate>
 
 <!-- 
         Olmasi zorunlu olan tek “template” dir. Listenin içerigini ve planini
 belirlemektedir (“content and 
        layout”). Veri kaynagindaki her satir için yinelenen biçimi tanimlamaktadir.     -->
 <ItemTemplate>
 Item template HTML
 </ItemTemplate>
 
 <!-- Satir satir 
        bilgi yazdirilirken takip eden satirin hangi biçimde yazilacagini betimlemektedir. 
        Örn: Okumanin kolaylastirilmasi için                 bir 
           satirin beyaz, takip eden satirin gri yazdirilmasi.  -->
 <AlternatingItemTemplate>
 Alternating 
						item template HTML
 </AlternatingItemTemplate>
 
 <!-- “Item” lar 
        arasindaki ayraçlarin biçiminin belirlenmesini saglamaktadir. -->
 <SeparatorTemplate>
 Separator template HTML
 </SeparatorTemplate>
 
 Veriye bagli satirlar 
        yazdirildiktan sonra sadece bir kez yer almasi gereken “tag” ler burada 
        tanimlanmalidir. Örn: </table>
 <FooterTemplate>
 Footer template HTML
 </FooterTemplate>
 
 <asp:Repeater>
 
 
 |  
 “Repeater” kontrolü önceden tanımlı stiller 
  içermemektedir. Bu yüzden geliştirici, “template” ler arasında biçimi ve içeriği 
  tanımlamalıdır. 
  
		
		“Template” kullanımına bir örnek vermek 
gerekirse, veritabanında bulunan bir tablodaki verilerin okunup “DataSet” 
nesnesine alındığı varsayılsın. “DataSet” nesnesi içerisindeki verilerin sadece 
kullanıcının okuması amacı ile kullanılacağı düşünülürse, “DataRepeater” 
kontrolü bu amaç için en uygun kontroldür. En basit kullanım ile, “DataRepeater” 
kontrolünün “HeaderTemplate” kısmında “<table>” kodu ile bir tablo 
yaratılmakta, “ItemTemplate” kısmında veri kaynağı belirtilmekte ve yazılış 
biçimi tanımlanmakta, “FooterTemplate” kısmında ise “</table>” kodu ile 
tablo kapatılmaktadır. Veri bağlama işlemi, ilgili sayfaya ait kodlarda 
gerçekleştirilmektedir.
		
	
Kod Örnegi
 
 Özet; bu örnekte “Groups” isimli tablodan, uygun kayıtlar “DataSet” 
  nesnesine alınmakta ve “Repeater” kontrolü ile sunulmaktadır. Detaylar kırmizı 
  yazılarda aktarılmaktadır. Bu senaryoyu kod örnegi ile açıklamak gerekirse;
 
 Repeater.aspx.cs
 
 
 
  Kod 4: Repeater.aspx.cs 
    | OleDbErrorCollection myConnection; OleDbCommand myCommand;
 DataSet ds = new DataSet();
 string strConn ="";
 string strSQL = "";  private void Page_Load(object sender, 
        System.EventArgs e)
 {
 strConn = "Provider=SQLOLEDB; Data 
        Source=(local); Initial Catalog=ASPNET;User ID=sa;"
 
 // Veri kaynagini 
        tanitan baglanti cümlesi yukaridaki kod satiri ile tanimlanmakta ve
 // asagidaki satir ile baglanti nesnesi 
        yaratilmaktadir.
 myConnection = new OleDbConnection(strConn);
 
 if (!Page.IsPostBack)
 ReBind();
 }
 
 public void ReBind()
 {
 strSQL = "select * from Groups";
 myCommand = new OleDbDataAdapter(SQL, myConnection);
 
 // ”Fill” metodu 
        ile “DataSet” nesnesi doldurulmaktadir
 myCommand.Fill(ds, "Groups");
 
 // “DataRepeat” 
        isimli “DataGrid” nesnesi ile veriler asagidaki
 // kod satirlari ile baglanmaktadir
 DataGrid1.DataSource=ds.Tables["Groups"].DefaultView;
 DataGrid1.DataBind();
 }
 
 
 |  
 Repeater.aspx
 
 
 
  Kod 5: Repeater.aspx 
    | <%@ Page language="c#" 
        Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" 
        Inherits="DataBinding_Makale.WebForm2" %> 
 <html>
 <body>
 <h3><font 
        face="Verdana"> Data Repeater</font></h3>
 <form runat=server>
 
 <!-- 
        “DataRepeat” kontrolü ile ilgili tüm tanimlamalar asagida yer almaktadir. 
        -->
 <asp:Repeater 
        id="DataRepeat" runat="server">
 
 <!--“HeaderTemplate” 
        de yeni bir tablo açilmis (HTML kodu ile), ve sütun isimleri statik olarak 
        atanmistir. -->
 <HeaderTemplate>
 <table 
        border = 1>
 <tr>
 <td><b>Name</b></td>
 <td><b>Group</b></td>
 <td><b>Type</b></td>
 </tr>
 </HeaderTemplate>
 
 <!--“ItemTemplate” de bir veri baglama 
        isleminden sonra alinan
 verinin yinelemeli olarak yazdirilmasi saglanmaktadir.
 Veritabaninda ‘bulunan tablodan okunan veriler, tablodaki
 sütun isimleri indeks ‘olarak kullanilarak çekilmektedir.
 Klasik ASP uygulamalari hatirlanacak olursa, veriler
 “recordset” nesnesi araciligi ile okunmakta ve bir döngü
 içerisinde “Response.write” metodu kullanilarak HTML “tag”
 lerine gömülmektedir . Tüm kontrol programciya aitti ve
 verinin liste halinde yinelemeli olarak yazdirilmasindan
 programci sorumludur. Yazilimdan anlamayan bir tasarimcinin
 kod ile içiçe olmasi ve karmasiklik gibi sorunlar bu gibi
 kontrollerin kullanimi ile ortadan kalkacaktir. -->
 <ItemTemplate>
 <tr>
 <td> 
        <%# Container.DataItem("code_display") %></td>
 <td><%# 
        Container.DataItem("code_category") %></td>
 <td><%# 
        Container.DataItem("type") %></td>
 </tr>
 </ItemTemplate>
 
 <!-- 
        Takip eden satir farkli bir biçim ile sunulabilmektedir -->
 <AlternatingItemTemplate>
 <tr 
        style="background-color: silver">
 <td> 
        <%# Container.DataItem("code_display") %></td>
 <td><%# 
        Container.DataItem("code_category") %></td>
 <td><%# 
        Container.DataItem("type") %></td>
 </tr>
 </AlternatingItemTemplate>
 
 <!-- 
        “HeaderTemplate” de açilmis olan tablo </table> kodu ile kapatilmaktadir 
        -->
 <FooterTemplate>
 </table>
 </FooterTemplate>
 
 </asp:Repeater>
 </form>
 </body>
 </html>
 
 
 
 
 |  
 Kaynaklar:
 
 
  1. Microsoft ASP.NET Professional Projects 
  – Hersh BhasinISBN:1-931841-21-7
 2. www.msdn.microsoft.com
 
                Makale:ASP.NET Veri Bağlama ASP.NET Serkan Üstündağ
 | 
        
            |  | 
        
            |  | 
        
            | 
                    
                        
                            
                        
                            Eklenen Son 10 
                            Bu Konuda Geçmiş 10 
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                            Son Eklenen 10 Makale Yükleniyor
                         
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         | 
        
            |  |