偶想做一菜单,类似于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
再次感谢~
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
再次感谢~
如果很多的话,可以考虑用户点击到时用JS去后台读取(或是使用ajax但原理一样)类似于CSDN和MSDN的菜单.
//递归生成菜单
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