下拉框显示多级菜单

效果图:

 

生成HTML源码:

 

表结构:

 

/// <summary>
/// 绑定控件
/// </summary>
protected void BindCtrl()
{//上级菜单
    SiteNavsBLL bllSiteNavs = new SiteNavsBLL();
    BindNav(bllSiteNavs, 0);
    ddlParentNav.Items.Insert(0,new ListItem("一级菜单","0-0"));
}

/// <summary>
/// 递归遍历菜单
/// </summary>
/// <param name="bll"></param>
/// <param name="ParentId"></param>
protected void BindNav(SiteNavsBLL bll, long ParentId=0)
{
    DataTable dtNav = bll.GetListJoin("ParentId=" + ParentId).Tables[0];
    if (dtNav.Rows.Count <= 0)
    {
        return;
    }

    //遍历菜单
    foreach (DataRow drNav in dtNav.Rows)
    {
        string dataText = "";
        string dataValue = "";
        //获取菜单级别
        int NavLevel;
        if (!int.TryParse(drNav["NavLevel"].ToString(), out NavLevel))
        {
            NavLevel = 1;
        }
                

        // |-- 菜单名称 
        for (int i = 0; i < NavLevel; i++)
        {
            dataText+="|- ";
        }
        dataText += drNav["Name"].ToString();

        dataValue = drNav["NavLevel"].ToString() + "-" + drNav["Id"].ToString();

        ddlParentNav.Items.Add(new ListItem(dataText, dataValue));

        BindNav( bll, Convert.ToInt64(drNav["Id"]));
    }
}

 

posted @ 2016-10-28 17:46  linyongqin  阅读(2073)  评论(0编辑  收藏  举报