龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.NET菜单用户控件:.NET无限级扩展菜单用户控件实现(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
MenuInfoAccess.cs文件 using System; using System.Collections.Generic; using System.Text; using Entity; using System.Data; namespace DAL { public class MenuInfoAccess { public static IEnumerableMenuI

MenuInfoAccess.cs文件

using System;
using System.Collections.Generic;
using System.Text;
using Entity;
using System.Data;

namespace DAL
{
    public class MenuInfoAccess
    {
        public static IEnumerable<MenuInfo> GetMenuTree()
        {
            string strSql = "select * from Menu order by sort";

            DataTable dt = OleDbHelper.ExecuteDataTable(OleDbHelper.CONN_STRING, CommandType.Text, strSql);

            return MenuInfoAccess.GetMenuNodeCollection(dt);
        }

        public static IEnumerable<MenuInfo> GetMenuNodeCollection(DataTable dt)
        {
            int type = 1;
            List<MenuInfo> menus = new List<MenuInfo>();


            MenuInfo menu;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];
                if ((int)dr["ParentId"] == 0)
                {
                    menu = new MenuInfo();
                    menu.Level = type;
                    menu.Id = (int)dr["ID"];
                    menu.TitleCN = dr["NameCN"] == DBNull.Value ? string.Empty : (string)dr["NameCN"];
                    menu.TitleEN = dr["NameEN"]==DBNull.Value?string.Empty:(string)dr["NameEN"];
                    menu.FilePath = dr["URL"]==DBNull.Value?string.Empty:(string)dr["URL"];
                    menu.IsVisibily = (bool)dr["Visibily"];
                    menu.ChildMenuInfo = GetChileNodeCollection(menu, dt, type);//递归获得子节点结合

                    menus.Add(menu);
                }
            }
            return menus;
        }

        //CHILE COLLECTION
        public static List<MenuInfo> GetChileNodeCollection(MenuInfo xElement, DataTable C, int type)
        {
            int childType = type + 1;
            MenuInfo item;
            List<MenuInfo> list = new List<MenuInfo>();

            DataRow[] collection = C.Select("ParentId=" + xElement.Id, "sort");
            if (collection.Length != 0)
            {
                foreach (DataRow dr in collection)
                {
                    item = new MenuInfo();
                    item.Level = childType;
                    item.Id = (int)dr["ID"];
                    item.TitleCN = dr["NameCN"]==DBNull.Value?string.Empty:(string)dr["NameCN"];
                    item.TitleEN = dr["NameEN"] == DBNull.Value ? string.Empty : (string)dr["NameEN"];
                    item.FilePath = dr["URL"] == DBNull.Value ? string.Empty : (string)dr["URL"];
                    item.IsVisibily = (bool)dr["Visibily"];
                    item.ChildMenuInfo = GetChileNodeCollection(item, C, childType);//递归获得子节点结合
                    list.Add(item);
                }
            }
            return list;
        }
    }
}

精彩图集

赞助商链接