偶想做一菜单,类似于http://www.maswsj.gov.cn/这个网站,偶的思路是全部数据从数据库里面读取,可能也要用到popmenu.js文件,数据库结构如下:
ID  NAME  CLASSID  HREF
1   水果   0        水果的连接
2   电器   0        电器的连接
3   动物   0        动物的连接
4   苹果   1        苹果的连接
5   桃子   1        桃子的连接
6   香蕉   1        香蕉的连接
7   电视   2        电视的连接
8   冰箱   2        冰箱的连接
9   猴子   3        猴子的连接
10  猫     3        猫的连接
菜单的效果是:
横向:
水果 | 电器| 动物
当点击“水果”或者鼠标放在“水果”上就自动纵向展出“苹果”,“桃子”,“香蕉”的菜单。
偶打算用递归实现,写了几天,还是没写出来,希望得到各位的指点,谢谢!
上面提到的JS,鉴于篇幅过长,我放在网上,地址是:http://www.ahhgd.com/popmenu.rar
再次感谢~

解决方案 »

  1.   

    如果数据不多可以一次性放到客户端的JS中,
    如果很多的话,可以考虑用户点击到时用JS去后台读取(或是使用ajax但原理一样)类似于CSDN和MSDN的菜单.
      

  2.   

    参考代码,
    //递归生成菜单
    private void CreatMenuItem()
    {
    OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Menu.mdb;Persist Security Info=False;");
    OleDbCommand myComm = new OleDbCommand("SELECT nid,name,pid FROM Items ORDER BY pid,nid",myConn);
    OleDbDataAdapter myAda = new OleDbDataAdapter(myComm); 
    DataSet ds = new DataSet();
    myAda.Fill(ds,"MenuItemINfos");
    DataRow [] drs = ds.Tables["MenuItemINfos"].Select("pid = 0");
    int index = 0;
    foreach(DataRow dr in drs)
    {
    MenuItem mi =new MenuItem((string)dr["name"]);
    this.mainMenu1.MenuItems.Add(index++,mi);
    CreatBranch(mi,(int)dr["nid"],ds);
    }
    }
    private void CreatBranch(MenuItem parmt,int pid,DataSet ds)
    {
    int index = 0;
    foreach(DataRow dr in ds.Tables["MenuItemINfos"].Select("pid = "+pid))
    {
    MenuItem mi =new MenuItem((string)dr["name"]);
    parmt.MenuItems.Add(index++,mi);
    CreatBranch(mi,(int)dr["nid"],ds);
    }
    }
    Dynamic Menu Based on DataBase
    By Daniel Presman 
    http://www.codeproject.com/useritems/dataBaseMenu.asp
      

  3.   

    http://singlepine.cnblogs.com/archive/2005/10/22/259955.html