java根据数据库生成菜单(递归)

2024-12-29 00:34:05
推荐回答(5个)
回答1:

不需要递归用一个特殊字符的算法来处理
比如
基本信息 1000
酒店管理 10001000
服务商管理 10002000
产品信息 2000
导游管理 20001000
物品管理 20002000

回答2:



<% GetUserName("admin"); %>



private void ptberu()
{
htmlr = "

    ";
    string sqlstr = "SELECT MENU_ID,TOP_MENU_ID,MENU_NAME,MENU_PATH FROM [TB_BG_MENU] WHERE MENU_LEVEL=1";
    DataTable dt = db.GetDataSet(sqlstr).Tables[0];
    for (int i = 0; i < dt.Rows.Count; i++)//循环判断首节点
    {
    string bigClass = dt.Rows[i]["MENU_NAME"].ToString();
    int ParentID = Convert.ToInt32(db.GetDataSet(sqlstr).Tables[0].Rows[i]["MENU_ID"].ToString());
    htmlr += "
  • " + bigClass + "";
    sonPhtion(ParentID);
    htmlr += "
  • ";
    }
    htmlr += "
";
}
private void sonPhtion(int ParentID)
{
string sontab = "SELECT MENU_ID,TOP_MENU_ID,MENU_NAME,MENU_PATH FROM [TB_BG_MENU] WHERE TOP_MENU_ID='" + ParentID + "'";
DataTable tabson = db.GetDataSet(sontab).Tables[0];
if (tabson.Rows.Count > 0)
{
htmlr += "
    ";
    for (int j = 0; j < tabson.Rows.Count; j++)//循环判断子节点
    {
    string smallName = tabson.Rows[j]["MENU_NAME"].ToString();
    int samllNum = Convert.ToInt32(tabson.Rows[j]["MENU_ID"].ToString());
    htmlr += "
  • " + smallName + "";
    sonPhtion(samllNum);
    htmlr += "
  • ";
    }
    htmlr += "
";
}
}

回答3:

如果你想完成,请帖出你的数据库表的设计。必须获得你menu 对象的数据结构才能确定怎么去去写。 建议:用HashMap 保存菜单结构信息,这样可以减少循环比较时对象转化的次数大大提高了生成速度。

回答4:

表少了两个字段,深度(depth),次序(orderValue),次序值是输入的随意的整数,排序就可以了,细节就不说了,把这两个字段加上,你再思考下吧

回答5:

用jquery和json来实现
js是最重要的一步,控制菜单的显示效果