常用方法-MIS系统常用的树菜单

今天公司没什么事做,就写了个树菜单的DEMO,以前都是用循环进行邦定的,由于,不能无限的添加菜单,所以,就重新写了一个,用递归的方式。

下以是据体的操作步骤:
数据库设计:
CREATE TABLE [dbo].[Tbl_Menu](
    [menu_id] [int] IDENTITY(1,1) NOT NULL,//id
    [menu_pid] [int] NULL,--------------------父ID
    [menu_name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,---------名子
    [menu_desc] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,--------描述
    [menu_orderId] [int] NULL,---------排序ID
    [menu_level] [int] NULL,------------菜单所在层次
    [menu_createTime] [datetime] NULL-------时间
) ON [PRIMARY]

程序代码:
 1 protected   void  Page_Load( object  sender, EventArgs e)
 2      {
 3        PageDataBind_Menu();
 4    }

 5
 6      private   void  PageDataBind_Menu()
 7      {
 8        string strSql = "select * from dbo.Tbl_Menu ";
 9        DataTable dt = SqlHelper.ExecuteDataset(ConnectionStringManager.ConnectionStringRead, CommandType.Text, strSql).Tables[0];
10
11
12        dt.DefaultView.RowFilter = "menu_pid=0";
13                
14        for (int i = 0; i < dt.DefaultView.Count; i++)
15        {
16            ddlMenu.Items.Add("*" + dt.DefaultView[i]["menu_name"].ToString());
17            GetChildNode(dt, dt.DefaultView[i]["menu_id"].ToString());
18        }

19
20
21    }

22
23
24      private   string  GetChildNode(DataTable dt,  string  _parentNodeId)
25      {
26        string name = string.Empty;
27        dt.DefaultView.RowFilter = "menu_pid=" + _parentNodeId;
28
29        if (dt.DefaultView.Count > 0)
30        {
31            for (int i = 0; i < dt.DefaultView.Count; i++)
32            {
33                name = dt.DefaultView[i]["menu_name"].ToString();
34                switch (Convert.ToInt32(dt.DefaultView[i]["menu_level"].ToString()))
35                {
36                    case 1:
37                        ddlMenu.Items.Add(" * " + name);
38                        break;
39                    case 2:
40                        ddlMenu.Items.Add(" * * " + name);
41                        break;
42                    case 3:
43                        ddlMenu.Items.Add(" * * * " + name);
44                        break;
45                    case 4:
46                        ddlMenu.Items.Add(" * * * * " + name);
47                        break;
48                    case 5:
49                        ddlMenu.Items.Add(" * * * * * " + name);
50                        break;
51                }

52                GetChildNode(dt, dt.DefaultView[i]["menu_id"].ToString());
53                dt.DefaultView.RowFilter = "menu_pid=" + _parentNodeId;
54            }

55            return "";
56        }

57        else
58        {
59            return "";
60        }

61    }




转载于:https://www.cnblogs.com/jerry-zheng/archive/2008/07/10/1240075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值