C#用XML文件做动态菜单(C/S模式)
答案:2 悬赏:0 手机版
解决时间 2021-11-13 23:06
- 提问者网友:献世佛
- 2021-11-13 07:47
C#用XML文件做动态菜单(C/S模式)
最佳答案
- 五星知识达人网友:迟山
- 2021-11-13 08:52
就是一个基础框架的例子。
首先根据ID获取当前权限的菜单xml文件,一般将xml存储到数据库里面。然后通过xml文件去编辑菜单。
再将菜单添加到form界面上面,给你个简单例子。
public partial class TreeMenu : RadTreeView
{
#region Field
private XDocument xDoc = null;
#endregion
#region Property
public XDocument XDoc
{
set
{
this.xDoc = value;
var items = xDoc.Element("Menu").Elements("MenuItem");
foreach (var item in items.ToList())
{
this.Nodes.Add(this.CreateTreeNode(item));
}
}
}
#endregion
public TreeMenu()
{
InitializeComponent();
}
public TreeMenu(IContainer container)
{
container.Add(this);
InitializeComponent();
this.NodeCheckedChanged += TreeMenu_NodeCheckedChanged;
}
#region Method
///
/// 点击节点更换
///
///
///
private void TreeMenu_NodeCheckedChanged(object sender, RadTreeViewEventArgs e)
{
//throw new NotImplementedException();
RadTreeNode node = sender as RadTreeNode;
}
private RadTreeNode CreateTreeNode(XElement xel)
{
//string treeName = xel.Attribute("Text").Value.ToString();
RadTreeNode node = new RadTreeNode();
node.Text = xel.Attribute("Text").Value.ToString();
if (xel.Elements("MenuItem").Count() > 0)
{
foreach (var q in xel.Elements("MenuItem"))
{
node.Nodes.Add(this.CreateTreeNode(q));
}
}
node.Tag = xel;
return node;
}
#endregion
}
首先根据ID获取当前权限的菜单xml文件,一般将xml存储到数据库里面。然后通过xml文件去编辑菜单。
再将菜单添加到form界面上面,给你个简单例子。
public partial class TreeMenu : RadTreeView
{
#region Field
private XDocument xDoc = null;
#endregion
#region Property
public XDocument XDoc
{
set
{
this.xDoc = value;
var items = xDoc.Element("Menu").Elements("MenuItem");
foreach (var item in items.ToList())
{
this.Nodes.Add(this.CreateTreeNode(item));
}
}
}
#endregion
public TreeMenu()
{
InitializeComponent();
}
public TreeMenu(IContainer container)
{
container.Add(this);
InitializeComponent();
this.NodeCheckedChanged += TreeMenu_NodeCheckedChanged;
}
#region Method
///
/// 点击节点更换
///
///
///
private void TreeMenu_NodeCheckedChanged(object sender, RadTreeViewEventArgs e)
{
//throw new NotImplementedException();
RadTreeNode node = sender as RadTreeNode;
}
private RadTreeNode CreateTreeNode(XElement xel)
{
//string treeName = xel.Attribute("Text").Value.ToString();
RadTreeNode node = new RadTreeNode();
node.Text = xel.Attribute("Text").Value.ToString();
if (xel.Elements("MenuItem").Count() > 0)
{
foreach (var q in xel.Elements("MenuItem"))
{
node.Nodes.Add(this.CreateTreeNode(q));
}
}
node.Tag = xel;
return node;
}
#endregion
}
菜单事件部分肯定要用到反射,都是些基础的东西。
全部回答
- 1楼网友:过活
- 2021-11-13 09:01
C#用XML,意思是分别提取XML里面的各个元素。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯