|
Lafı fazla uzatmadan açıklamak istiyorum eğer bir menü yapıyor ve sonsuz alt kategoriye ihtiyacınız varsa..
Özyinelemeli recursion yapıları kullanmanız gerekir..
bu fonskiyonlara recursive veya özyinelemeli fonksiyonlar denir...
sonsuz kategori sistemi için
evet efendim anlatacağımız şey ağaç yapısı sonsuz alt kategori sistemi için
aşağıdaki veritabanı yapsını tanımladım...
ust id ler "0" ana kategorilar id ler alt kategorileri gösteriyor ve bu böyle gidiyor....
id UstId menuad 30 0 ANA SAYFA 32 0 ILETISIM 56 0 GENEL BILGILER 57 30 Basvuru Evraklari 58 56 Aranan Sartlar 59 56 Geçmis Sinav Sorulari 60 57 Sürücü Belge Siniflari 61 57 Sinav Kurallari 62 56 Sinav Tarihleri .... devam ediyor...
int int varchar
ben bu örneği yazarken access te denedim
şimdi c# koduna gelirsek eğer...
sayfamın codebehind indaki kodlar
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + HttpContext.Current.Server.MapPath("App_Data/db.mdb"); protected void Page_Load(object sender, EventArgs e) { Menu(0, 0); } protected int Menu(int parentid, int level) { string sql2 = "SELECT * FROM menu WHERE UstId=" + Convert.ToString(parentid); OleDbConnection bag = new OleDbConnection(connstr); OleDbCommand cmd = new OleDbCommand(sql2, bag); bag.Open(); OleDbDataReader olerd = cmd.ExecuteReader();
while (olerd.Read()) { if (parentid.ToString() == olerd[1].ToString()) { deneme.InnerHtml += "<ul>"; } deneme.InnerHtml += "<li>" + olerd[0].ToString() + " " + olerd[1].ToString() + " " + olerd[2].ToString()+"</li>"; deneme.InnerHtml += "<br>";
Menu(Convert.ToInt32(olerd[0].ToString()), level + 1); if (parentid.ToString() == olerd[1].ToString()) { deneme.InnerHtml += "</ul>"; } } olerd.Close(); return 0; }
ASPX SAYFASI TARAFINDA DİV in innerHTML özelliğine yazdırıyorum menümü
<form id="form1" runat="server"> <div runat="server" id="deneme"> </div> </form>
İyi günlerde iyi amaçlar için kullanmanız dileğiyle
Kategori
: C#.Net
Etiketler : Alt Kategori ,
Tarih : 19.07.2010
Ekleyen : ozgur
|