İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Asp.net Treeview

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
Uzun zamandır Asp.net Treeview ile uğraşıyorum. Fakat yapmak istediğim şeyi yapamadım. Bu konuda yardımcı olursanız çok sevinirim.

Yapmak istediğim şey aynen şöyle :

1) Kategori 1
---Alt Kategori 1
---Alt Kategori 2
2) Kategori 2
---Alt Kategori 1
---Alt Kategori 2

Yani sitemi açtığım zaman kategoriler listelenecek ve hemen altında alt kategorileri listelenecek. MsSql de sınırsız alt kategorili bir mantıkla çalışıyorum. Aşağıda da görüldüğü gibi sadece 3 tane field'ım var.

Tablo Adı : Kategorilerim
Hücrelerim : KATID-USTKATID-KATAD

Kodları Vb.net kullanarak yazıyorum.
Bana Vb.net olarak en kısa ve basit yoldan yukarıdaki işlemi nasıl yapabileceğimi söyleyebilir misiniz ?
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
29
Konum
Live in .NET
Başlangıç noktan USTKATID boş olan kayıtlardır. Yani root kategoriler. Her bir root için girip tamamen o node bloğunu tamamlayan bir recursive fonksiyon yazarsın ve her girişte de ilgili node'a yeni bir child eklersin. Demek istediğim şu aslında;

Kod:
Private _CategoryDS As DataSet = DataLayer.GetCategoryData() 'Böyle bir fonksiyonun olduğunu varsayıyorum.

Private Sub BuildTree

	For Each oRow as DataRow in _CategoryDS.Tables(0).Select("USTKATID IS lisanssız")
		Me.BuildChild(CType(oRow("KATID"),Integer))
	Next
End Sub

Private Sub BuildChild(CategoryId as Integer)
	'Burada treeview'a node eklemesi yapabilirsin. 
	'Ayrıca bu recursive fonksiyona ilgilendiğin treeview node'u da referans olarak verip ona ekleme yapabilirsin.
	If _CategoryDS.Tables(0).Select("USTKATID=" & CategoryId).Length > 0
		'Bu durumda buraya gelen category'nin alt node`ları vardır. Recursive devam etmelidir.
		For Each oRow As DataRow in _CategoryDS.Tables(0).Select("USTKATID=" & CategoryId)
			Me.BuildChild(CType(oRow("KATID"),Integer))
		Next
	Else
		'Bu durumda bu kategori son node'lardan biridir. Devama gerek yok.
	End If
End Sub

(Kusura bakma notepad'de yazdım hata olabilir.)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst