wfcfan
随笔 - 24, 文章 - 1, 评论 - 38, 引用 - 2
Menu(XMl递归)
最终效果:
代码:
1
<?
xml version="1.0" encoding="utf-8"
?>
2
<
CataLog
>
3
<
Links
id
="1"
Text
="产品库1"
roles
="123"
>
4
<
Link
id
="2"
Text
="产品库11"
roles
="123"
></
Link
>
5
<
Link
id
="3"
Text
="产品库12"
roles
="113"
></
Link
>
6
<
Links
id
="11"
Text
="产品库1"
roles
="123"
>
7
<
Link
id
="24"
Text
="产品库www"
roles
="1213"
></
Link
>
8
<
Link
id
="34"
Text
="产品库333"
roles
="113"
></
Link
>
9
<
Links
id
="17"
Text
="产品库dd1"
roles
="123"
>
10
<
Link
id
="244"
Text
="产品库sds"
roles
="123"
></
Link
>
11
<
Link
id
="344"
Text
="产品库433"
roles
="113"
></
Link
>
12
</
Links
>
13
</
Links
>
14
</
Links
>
15
<
Links
id
="9"
Text
="产品库2"
roles
="123"
>
16
<
Link
id
="5"
Text
="产品库21"
roles
="123"
></
Link
>
17
<
Link
id
="6"
Text
="产品库22"
roles
="123"
></
Link
>
18
</
Links
>
19
<
Link
id
="8"
Text
="产品库3"
roles
="123"
></
Link
>
20
</
CataLog
>
1
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
2
3
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
4
<
head
runat
="server"
>
5
<
title
>
无标题页
</
title
>
6
</
head
>
7
<
body
>
8
<
form
id
="form1"
runat
="server"
>
9
<
asp:Menu
runat
="server"
ID
="Menu1"
BackColor
="#FFFBD6"
DynamicHorizontalOffset
="2"
Font-Names
="Verdana"
Font-Size
="0.8em"
ForeColor
="#990000"
StaticSubMenuIndent
="10px"
>
10
<
Items
>
11
12
</
Items
>
13
<
StaticMenuItemStyle
HorizontalPadding
="5px"
VerticalPadding
="2px"
/>
14
<
DynamicHoverStyle
BackColor
="#990000"
ForeColor
="White"
/>
15
<
DynamicMenuStyle
BackColor
="#FFFBD6"
/>
16
<
StaticSelectedStyle
BackColor
="#FFCC66"
/>
17
<
DynamicSelectedStyle
BackColor
="#FFCC66"
/>
18
<
DynamicMenuItemStyle
HorizontalPadding
="5px"
VerticalPadding
="2px"
/>
19
<
StaticHoverStyle
BackColor
="#990000"
ForeColor
="White"
/>
20
</
asp:Menu
>
21
</
form
>
22
</
body
>
23
</
html
>
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
IsPostBack)
{
loadMenu();
}
}
private
void
loadMenu()
{
XmlDocument dom
=
new
XmlDocument();
dom.Load(MenuPath.XmlPath);
XmlElement root
=
dom.DocumentElement;
if
(root.ChildNodes.Count
==
0
)
throw
new
Exception(
"
Data Source is null
"
);
XmlNodeList nodelist
=
root.ChildNodes;
initMenu(nodelist);
}
public
void
initMenu(XmlNodeList nodeList)
{
MenuItem item
=
null
;
for
(
int
i
=
0
; i
<
nodeList.Count; i
++
)
{
if
(
!
isInRole(nodeList[i].Attributes[
"
roles
"
].Value))
continue
;
item
=
new
MenuItem();
item.Text
=
nodeList[i].Attributes[
"
Text
"
].Value;
item.Value
=
nodeList[i].Attributes[
"
id
"
].Value;
if
(nodeList[i].Name
==
"
Links
"
)
GetChildNodeData(nodeList[i], item);
Menu1.Items.Add(item);
}
}
bool
isInRole(
string
rolesid)
{
bool
b
=
false
;
string
[] rd
=
rolesid.Trim().Trim(
'
,
'
).Split(
'
,
'
);
foreach
(
string
s
in
rd)
{
if
(s
==
"
123
"
)
{
b
=
true
;
break
;
}
}
return
b;
}
private
void
GetChildNodeData(XmlNode node,MenuItem pItem)
{
MenuItem item
=
null
;
foreach
(XmlNode n
in
node.ChildNodes)
{
if
(
!
isInRole(n.Attributes[
"
roles
"
].Value))
continue
;
item
=
new
MenuItem();
item.Text
=
n.Attributes[
"
Text
"
].Value;
item.Value
=
n.Attributes[
"
id
"
].Value;
pItem.ChildItems.Add(item);
if
(n.Name
==
"
Links
"
)
GetChildNodeData(n, item);
}
}
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2008-06-27 17:38
RedFox(低调)
阅读(1205)
评论(1)
编辑
收藏
评论
1238540
#1楼
回复
引用
查看
XML可以直接绑定到Menu控件上的。不用写代码。
2008-06-27 17:45
|
Ants
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
伊朗封杀Gmail和Facebook等互联网服务
·
分析称专利之争让谷歌苹果两败俱伤
·
Android平台发现新型手机病毒Rootsmart
·
HTC首款Android4.0手机大曝光
·
这是不是你期待的 iPad 3?
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
导航
博客园
首页
新随笔
联系
订阅
管理
<
2008年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
公告
昵称:
RedFox(低调)
园龄:
4年
粉丝:
2
关注:
0
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
editplus
(1)
editplus注册机
(1)
九九乘法表
(1)
c#九九乘法表
(1)
c# 卸载
(1)
winfrom 卸载快捷方式
(1)
SourceGear Vault 注册码
(1)
php xml
(1)
php xpath
(1)
VS2010 注册码
(1)
更多
随笔档案
2011年4月 (1)
2010年5月 (3)
2010年4月 (2)
2010年1月 (3)
2009年11月 (1)
2009年10月 (1)
2009年9月 (1)
2009年8月 (1)
2009年2月 (2)
2008年12月 (1)
2008年7月 (2)
2008年6月 (5)
2008年1月 (1)
相册
IT
技术收藏
【全新正版】认识商业(插图第8版)
【全新正版】认识商业(插图第8版)
asp.net控件开发基础系列
asp.net控件开发基础系列
jquery autoComplete 介绍
jquery autoComplete 介绍
jquery插件系列之 jquery.validate
jquery插件系列之 jquery.validate
Response的一些常用用法
Response的一些常用用法
Symfony
Symfony
zend studio
zend studio 7.0 注册码 Username: zendstudio.net Serial Number: 3727234F6095F72034F6095F
常用js控件
常用js控件
后台UI
后台UI
全文索引
全文索引
探讨下Tag标签的数据库设计(千万级数据量)
探讨下Tag标签的数据库设计(千万级数据量)
最新评论
阅读排行榜
评论排行榜
推荐排行榜