Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Serkan Üstündağ
Serkan Üstündağ
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
3 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  ASP.NET Serkan Üstündağ
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : ASP.NET
Yayınlanma Tarihi : 17.3.2004
Okunma Sayısı : 62903
Yorum Sayısı : 6     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 28.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 28.3.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 28.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 28.3.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
ASP.NET Veri Bağlama
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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

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;
}

Kod 1: DataBind.aspx .cs (Code Behind )

DataBind.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>

Kod 2: DataBinding.aspx

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.

<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>

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.

“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

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();
}

Kod 4: Repeater.aspx.cs

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>



Kod 5: Repeater.aspx

Kaynaklar:

1. Microsoft ASP.NET Professional Projects – Hersh Bhasin
ISBN:1-931841-21-7
2. www.msdn.microsoft.com
Makale:
ASP.NET Veri Bağlama ASP.NET Serkan Üstündağ
  • Yazılan Yorumlar
  • Yorum Yaz
EKİ
27
2015
Hocam eline sağlık, güzel anlatım.
OCA
28
2005
Allah Razi Olsun emek harcanmis bu hale getirmissin bununlada kalmamis bizimle paylasmissin. Tesekur ederim.
TEM
29
2004
Sayin Gokbulut, Kaynaklar bolumune dikkat etseydiniz makalenin nereden "araklandigini" gorurdunuz. İyi Calismalar
TEM
29
2004
Araklanıp, İngilizcenden türkçeye çevrilip yazılmış bir makale. Zamanında repeater hakkında o kadar çok araştırdımki. Keş bu yazı daha önce önüme çıksaymış.
MAY
16
2004
Yararlı bir makale olmuş tebrikler. İşime yaradı benim
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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