hier ist der code zu dem was ich geschrieben hab,
von asp her bin ich es gewohnt so zu programmieren.
aber irgendwie geht es sicher einfacher.
 

<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">
 
    public class Menu : Control {
   
              int beId;
              int i,d,j,k,l,m;
              int temp1, temp2;
              int ka_parent_id;
              int counter = 0;
              int intWerte;
              int artikelGruppe;
              int[] arrKaId = new int[99];
              int[] arrKaParentId = new int[99];
   
              string sql;
              string[,] arrMenu = new string[99,99];
   
         public void Page_Load()
         {
   
                   if(Request.QueryString["id"] != "" && Request.QueryString["id"] != null)
                     {ka_parent_id = Int32.Parse(Request.QueryString["id"]);}
                   else
                     {ka_parent_id = 0;}
                   if(Request.QueryString["argr"] != "" && Request.QueryString["argr"] != null)
                   {}
   
                   beId = 1;
    
                    //verbindung zur datenbank und die kategorieen auslesen
                   sql = "SELECT bezeichnung, ka_id, ka_parent_id FROM shp_kategorie WHERE be_id = "+beId+" ORDER BY ordnungs_id";
                   string connectionString = "server=\'xxx\'; user id=\'xxx\'; password=\'xxx\'; Database=\'xxx\'";
                   SqlConnection dataConn = new SqlConnection(connectionString);
                   dataConn.Open();
                   DataSet ds = new DataSet("gemdb");
                   SqlDataAdapter dsc = new SqlDataAdapter(sql, dataConn);
                   dsc.Fill(ds,"shp_kategorie");
                   dataConn.Close();
   
   
                   intWerte = ds.Tables[0].Rows.Count;
    
                    //arrays mit den werten f�llen --> arrMenu = bezeichnung, arrKaId = id f�r sub, arrKaParentId = id f�r �bergeordnete ebene
                   for(m=0;m<ds.Tables[0].Rows.Count;m++)
                   {
                      arrMenu[m,Int32.Parse(ds.Tables[0].Rows[m]["ka_parent_id"].ToString())] = ds.Tables[0].Rows[m]["bezeichnung"].ToString();
                      arrKaId[m]= Int32.Parse(ds.Tables[0].Rows[m]["ka_id"].ToString());
                      arrKaParentId[m] = Int32.Parse(ds.Tables[0].Rows[m]["ka_parent_id"].ToString());
                   }
   
   
               Response.Write("<table border='0' width='200px'>");
               varBuildtree(ka_parent_id);
               Response.Write("</table>");
          }
   
   
          public void varBuildtree(int ka_parent_id)
          {
             if(ka_parent_id == 0)
                 {
                 for(i=0;i<intWerte;i++)
                     {
                     if(arrMenu[i,ka_parent_id] != "" && arrMenu[i,ka_parent_id] != null)
                         {
                         Response.Write("<tr><td class='standard'>");
                         Response.Write("<a class='menu' href='"+arrKaId[i]+"'>");
                         Response.Write(arrMenu[i,ka_parent_id]);
                         Response.Write("</a>");
                         Response.Write("</td></tr>");
                         }
                     }
                 }
             else
                 {
                 if(Request.QueryString["action"] == "sub")
                     {
                     temp1=Int32.Parse(Request.QueryString["temp1"]);
                     temp2=Int32.Parse(Request.QueryString["temp2"]);
                     }
                 else
                     {
                     for(d=0;d<intWerte;d++)
                         {
                         if(arrKaId[d] == ka_parent_id)
                             {temp1=d;}
                         if(arrKaId[d] == arrKaParentId[ka_parent_id])
                             {temp2=d;}
                         }
                     }
   
                 for(j=0;j<intWerte;j++)
                     {
                     if(arrMenu[j,0] != "" && arrMenu[j,0] != null)
                         {
                         Response.Write("<tr><td class='standard'>");
                         if(ka_parent_id == arrKaId[j])
                             {Response.Write("<a class='menu' href=''>");}
                         else
                             {Response.Write("<a class='menu' href='"+arrKaId[j]+"'>");}
                         Response.Write(arrMenu[j,0]);
                         Response.Write("</a>");
                         Response.Write("</td></tr>");
                         if(j == temp1)
                             {
                             for(k=0;k<intWerte;k++)
                                 {
                                 if(arrMenu[k,arrKaId[temp1]] != "" && arrMenu[k,arrKaId[temp1]] != null)
                                 {
                                     Response.Write("<tr><td class='standard'>&nbsp;&nbsp;&nbsp;&nbsp;");
                                     if(ka_parent_id == arrKaId[k])
                                         {Response.Write("<a href='"+arrKaId[j]+"'>");}
                                     else
                                         {Response.Write("<a href='"+arrKaId[k]+"&action="">                                     Response.Write(arrMenu[k,arrKaId[temp1]]);
                                     Response.Write("</a>");
                                     Response.Write("</td></tr>");
   
                                     if(k == temp2)
                                         {
                                         for(l=0;l<intWerte;l++)
                                             {
                                             if(arrMenu[l,arrKaId[temp2]] != "" && arrMenu[l,arrKaId[temp2]] != null)
                                                 {
                                                 Response.Write("<tr><td class='standard'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                                                 Response.Write(arrMenu[l,arrKaId[temp2]]);
                                                 Response.Write("</td></tr>");
                                                 }
                                             }
                                         }
                                     }
                                 }
                              }
                            }
                         }
                 }
   
            }
    }
 
</script>
----- Original Message -----
Sent: Saturday, February 15, 2003 1:37 PM
Subject: [Csharp.net] Re: [Csharp.net] men� aus db aufbauen

dann schreib mal deinen Code dazu...
----- Original Message -----
Sent: Saturday, February 15, 2003 11:53 AM
Subject: [Csharp.net] men� aus db aufbauen

hi,
ich versuche gerade ein men� zu machen, das aus der Datenbank heraus
aufgebaut wird. Das Men� ist f�r einen Shop gedacht und es sollen
die einzelnen Kategorieen dargestellt werden. Wenn auf eine Hauptkategorie
geklickt wird, sollte unter dieser Kategorie die unterkategorieen erscheinen
und wenn dort hinaufgeklickt wird, wieder eine Ebene tiefer.
Da ich noch ziemlich neu in asp.net (c#) bin und vorher asp gemacht habe,
denk ich irgendwie zu komplieziert. Das Men� wo ich gemacht habe
funktioniert
jedoch sieht es so kompliziert aus mit einer menge von Schleifen.
Ich glaube es gibt eine viel einfachere L�sung f�r so einen Men�aufbau,
w�hre froh, wenn jemand eventuell so ein script rumliegen hat oder einen
Link kennt wo ich nachschauen kann, wie ich soetwas einfach L�se.

P.S.: ich weis auch nicht, wie ich _javascript_ von C# schreiben lassen kann
bzw
C# Sourcecode in _javascript_. So wie in ASP einfach einbinden klappt nicht.

danke
Patrick

Antwort per Email an