Blog Home  Yalcomania'n�n Yeri Feed your aggregator (RSS 2.0)  
Yalçın Uzun - Sonsuz Ağaç yapısındaki Kategoriler tablosunu ASP.Net Treeview nesnesine doldurmak
Kişisel Blog
 
 Friday, August 03, 2007
ASP.Net'te TreeView nesnesine sonsuz ağaç yapısındaki verilerinizi mi atmak istiyorsunuz? İşte cevabı:
(Aynı zamanda güzel bir recursive method örneği)

Kategoriler Tablosu:
KategoriId - int
Kategori Ad - varchar(50)
UstKategoriId - int (Nullable)

Bu tabloda KategoriId ve UstKategoriId arasında da ilişki var.


public partial class Default3 : System.Web.UI.Page

{

//Kategoriler tablosunun duracağı dataset. Her iki metoddan da ulaşılcağı için global yaptım.

DataSet ds = new DataSet();

protected void Page_Load(object sender, EventArgs e)

{

//Treeview'imizin node'larını oluşturmaya başlıyoruz

TreeViewNodlariniOlustur();

}

private void TreeViewNodlariniOlustur()

{

//Treeview'i önce temizleyelim

this.TreeView1.Nodes.Clear();

//Standart database kodları, amaç tüm kategoriler tablosunu bir dataset'e atmak

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyWebSiteDBConnectionString"].ConnectionString);

SqlDataAdapter da = new SqlDataAdapter("select * from kategoriler", con);

da.Fill(ds);

//Önce en üst kategorileri yazdırmalıyız. Bu da üst kategoriId'si null olan kayıtlar demektir.

DataRow[] anaKategoriler = ds.Tables[0].Select("UstKategoriId is null");

//Şimdi hepsini dolaşmaya başlıyoruz

foreach (DataRow anaKategori in anaKategoriler)

{

TreeNode tn = new TreeNode(anaKategori["KategoriAd"].ToString(), anaKategori["KategoriId"].ToString()); //Birinci parametre Text, ikinci parametre Value

this.TreeView1.Nodes.Add(tn); //Treeview'e ekliyoruz

//Yazdığımız her kategorilerinin altında başka kategoriler var mı diye tek tek kontrol ediyoruz

AltKategorileriYaz(tn, Convert.ToInt32(anaKategori["KategoriId"]));

}

}

//Cillop gibi recursive method'umuz

private void AltKategorileriYaz(TreeNode ustKategori, int kategoriId)

{

//Parametreden aldığımız kategori'nin altındaki altkategorileri sorguluyoruz

DataRow[] kategoriler = ds.Tables[0].Select("UstKategoriId=" + kategoriId);

//Her alt kategoriyi dolaşmaya başlıyoruz

foreach (DataRow kategori in kategoriler)

{

TreeNode tn = new TreeNode(kategori["KategoriAd"].ToString(), kategori["KategoriId"].ToString());

//Olulan yeni node'u, parametre olarak gönderdiğimiz node'a bağlıyoruz.

ustKategori.ChildNodes.Add(tn);

//ve bu kategorinin de altında alt kategoriler var mı diye kendimizi tekrar çağırıyoruz.

AltKategorileriYaz(tn, Convert.ToInt32(kategori["KategoriId"]));

}

}

}

Friday, August 03, 2007 2:57:12 PM (GTB Standard Time, UTC+02:00)  #    Comments [1]    | 
Copyright © 2008 Yalçın Uzun