常用方法-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]
程序代码:
下以是据体的操作步骤:
数据库设计:
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
}
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
else58
{59
return "";60
}61
}专注于
![]()

浙公网安备 33010602011771号