ASP.NET Data Binding İşlemleri

24-11-2013
İki tiptir:
1. Single-Value Data Binding
2. Repeated-Value Data Binding

Not: Single-Value Data Binding pek kullanışlı olmadığı için sadece Repeated-Value Data Binding’ten bahsedeceğiz.


Repeated-Value Data Binding


ASP.NET List Control, ListBox, DropDownList, CheckBoxList, RadioButtonList sınıfları ile kullanılır. Rich Web control ise GridView, DetailsView, FormView, ListView sınıfları ile birlikte kullanılır.
Örnek :
protected void Page_Load(object sender, EventArgs e)
{
    ArrayList fruit = new ArrayList();
    fruit.Add("Kivi");
    fruit.Add("Elma");
    fruit.Add("Armut");
    fruit.Add("Tongel");
 
    ListBox item = new ListBox();
    item.DataSource = fruit;
    this.DataBind();//Binding'i aktivite eder. Bu metod çağrılmazsa item'ın DataSource'na fruit atanamaz.
}



ListControl Collection


Sadece belirli türleri tutmak için kullanılan bir collection’dur. System.Collections.Generic namespace’i içerisinde bulunur.
Örnek :
ListBox item = new ListBox();
List<string> liste = new List<string>();
liste.Add("Muz");
liste.Add("Elma");
liste.Add("Armut");
item.DataSource = liste;
this.DataBind();


Not:
DataBinding olmasaydı List control’lerine item eklerken foreach loop kullanacaktık, yani tek tek item’ları eklemekle uğraşacaktık.
Şu alanlarda kullanılabilir : Bir form doldururken next dediği zaman CheckBoxList’in DataSource’una item’ları ekler ve CheckBoxList’in Visible property’sini true yaparız.(next butonuna tıklanmadan önce Visible property’yi false yaptık)


DataBinding with a Dictionary Collection


İki temel dictionary collection türü vardır :
1. HashTable : System.Collections namespace içerisinde bulunur. Herhangi bir türden nesneleri kaydetmeyi sağlar.
2. Dictionary : System.Collections.Generic namespace içerisinde bulunur. ArrayList veya List gibi Dictionary nesnesi yaratılır ; fakat Dictionary nesnesi yaratılırken her item unique bir index ile eklenir.
Örnek :
Dictionary<int, string> fruit = new Dictionary<int, string>();
fruitim.Add(1, "Elma");
fruitim.Add(1, "Armut");
fruitim.Add(1, "Tongel");
  
ListBox item = new ListBox();
item.DataSource = fruitim;
item.DataTextField="value";
this.DataBind();


Örnek:
Dictionary<string, string> sozluk = new Dictionary<string, string>();
sozluk.Add("come", "gelmek");
sozluk.Add("go", "gitmek");
sozluk.Add("take", "almak");
sozluk.Add("borrow", "odunc almak");
ListBox item1 = new ListBox();
item1.DataSource = sozluk;
item1.DataTextField = "key";
ListBox item2 = new ListBox();
item2.DataSource = sozluk;
item2.DataTextField = "value";
this.DataBind();


item1 nesnesinde sözlük’ün key’leri yani come,go,take,borrow ; item2 nesnesinde sözlük’ün value’leri yani gelmek,gitmek,almak,odunc almak gözükecektir.

Not:
ListItem ile DataValueField’in birlikte kullanılmasını araştır.

DataTable
Class’ı Kullanarak Tablo Yaratmak:
1. DataTable nesnesi yaratılır.
2. DataColumn nesneleri yaratılır. DataTable nesnesine eklenir.
3. DataTable nesnesinin NewRow() metoduyla row’lar yaratılır. DataTable nesnesine eklenir.
4. DataSet nesnesi yaratılır. Bu nesneye yaratılan DataTable nesnesi eklenir.

Örnek:

protected void Page_Load(object sender, EventArgs e)
{
    DataColumn clmID = new DataColumn("ID");
    DataColumn clmName = new DataColumn("Name");
    DataTable tblYeni = new DataTable();
    tblYeni.Columns.Add(clmID);
    tblYeni.Columns.Add(clmName);
    DataRow rwIlk = tblYeni.NewRow();
    rwIlk["ID"] = "1723413212";
    rwIlk["Name"] = "Muhammed";
    tblYeni.Rows.Add(rwIlk);
    DataSet yeniDataSet = new DataSet();
    yeniDataSet.Tables.Add(tblYeni);
    ListBox1.DataSource = tblYeni;
    ListBox1.DataTextField = "Name";
    this.DataBind();
}


Not:
DataTextField ListBox’ın DataSource’una bir tablo atandığı zaman veya bir Dictionary nesnesi olduğu zaman kullanılır ; çünkü hem tablo da hem de Dictionary nesnesinde farklı sütunlar vardır. DataTextField ‘e bir tablonun sütun ismini atarsak o tablonun ilgili sütunundaki değerler ListBox’ta gösterilir. Dictionary nesnesinde ise key ve value olmak üzere iki değer vardır. DataTextField’e “key” string’i atarsak ListBox’ta key’ler ; “value” string’i atarsak Dictionary nesnesinin value’leri atanır.

Not:
Eğer ListBox’ın DataSource property’sine bir DataSet nesnesi atanırsa ListBox’ın DataMember property’sine de DataSet nesnesindeki tablo isimlerinden biri atanmalıdır. ListBox’ın DataTextField’ine ise DataMember’a atanan tablo’nun bir sütun’unun ismi atanır.

Örnek
:
DataColumn clmID = new DataColumn("ID");
DataColumn clmName = new DataColumn("Name");
DataTable tblYeni = new DataTable("Tablomuz");
tblYeni.Columns.Add(clmID);
tblYeni.Columns.Add(clmName);
DataRow rwIlk = tblYeni.NewRow();
rwIlk["ID"] = "1723413212";
rwIlk["Name"] = "Muhammed";
tblYeni.Rows.Add(rwIlk);
DataSet yeniDataSet = new DataSet();
yeniDataSet.Tables.Add(tblYeni);
ListBox1.DataSource = yeniDataSet;
ListBox1.DataMember = "Tablomuz";
ListBox1.DataTextField = "Name";
this.DataBind();

© 2019 Tüm Hakları Saklıdır. Codesenior.COM