asp.net TreeView与XML配合使用v1.1
刚我在做Tree view 绑定时自己摸索了一下,网上有人说TreeView绑定数据源,用什么递归绑定啥的,我不想看了,就自己试着写了一个
我是这样做的,如果有什么问题请大神指导,我是菜鸟额..
1:页面TreeView 叫tvFunction
2:新建 adminFunction.xml
<?xml version="1.0" encoding="utf-8" ?>
<functions>
<function name="商品发布" url="~/page/leaves/leave.aspx">
<subfunction name="添加商品" url="~/page/leaves/leave.aspx">
</subfunction>
<subfunction name="添加商品" url="~/page/leaves/leave.aspx">
</subfunction>
</function>
<function name="留言发布" url="~/page/leaves/leave.aspx">
<subfunction name="添加留言" url="~/page/leaves/leave.aspx">
</subfunction>
<subfunction name="修改留言" url="~/page/leaves/leave.aspx">
</subfunction>
</function>
</functions>
3:页面绑定
/// <summary>
/// 初始化功能树结构
/// </summary>
private void InitFunction()
{
XmlDocument xmldoc = new XmlDocument();
string xmlPath = "~/adminFunction.xml";
xmlPath = Server.MapPath(xmlPath);
xmldoc.Load(xmlPath);
XmlNode root = xmldoc.DocumentElement; foreach (XmlNode node in root.ChildNodes)
{
//获取父节点的信息显示(轻狂-书生)
XmlElement x1 = node as XmlElement;
string name = x1.GetAttribute("name");
string url = x1.GetAttribute("url");
TreeNode tn = new TreeNode();
tn.Text = name;
tn.NavigateUrl = url;
foreach (XmlNode subnode in x1.ChildNodes)
{
XmlElement subxmlEmt = subnode as XmlElement;
string subname = subxmlEmt.GetAttribute("name");
string suburl = subxmlEmt.GetAttribute("url");
TreeNode subtn = new TreeNode();
subtn.Text = subname;
subtn.NavigateUrl = suburl;
tn.ChildNodes.Add(subtn); }
tvFunction.Nodes.Add(tn); }
}
4:显示效果

感觉效果还行,请问我这样做好么?有什么更好的方式么?请指教,谢谢了..
----修改后的版本
根据大神们的指导,我晚上回来试了下递归(全手打)
方法如下
1:XML改为
<?xml version="1.0" encoding="utf-8" ?>
<functions>
<function name="商品发布" url="~/page/leaves/leave.aspx">
<subfunction name="添加商品" url="~/page/leaves/leave.aspx">
<subfunction1 name="" url="~/page/leaves/leave.aspx">
<subfunction2 name="" url="~/page/leaves/leave.aspx">
</subfunction2>
<subfunction2 name="" url="~/page/leaves/leave.aspx">
</subfunction2>
</subfunction1>
<subfunction1 name="" url="~/page/leaves/leave.aspx">
</subfunction1>
</subfunction>
<subfunction name="添加商品" url="~/page/leaves/leave.aspx">
</subfunction>
</function>
<function name="留言发布" url="~/page/leaves/leave.aspx">
<subfunction name="添加留言" url="~/page/leaves/leave.aspx">
</subfunction>
<subfunction name="修改留言" url="~/page/leaves/leave.aspx">
</subfunction>
</function>
</functions>
2:后台代码
/// <summary>
/// 初始化功能树结构
/// </summary>
private void InitFunction()
{
XmlDocument xmldoc = new XmlDocument();
string xmlPath = "~/adminFunction.xml";
xmlPath = Server.MapPath(xmlPath);
xmldoc.Load(xmlPath);
XmlNode root = xmldoc.DocumentElement;
tvFunction.Nodes.Add(CreateNode(root,new TreeNode()));
}
/// <summary>
/// 递归方法产生树(create by 轻狂书生)
/// </summary>
/// <param name="root">根节点</param>
/// <param name="tn">根节点对应的树节点</param>
/// <returns></returns>
private TreeNode CreateNode(XmlNode root, TreeNode tn)
{ foreach (XmlNode node in root.ChildNodes)
{
XmlElement subxmlEmt = node as XmlElement;
string subname = subxmlEmt.GetAttribute("name");
string suburl = subxmlEmt.GetAttribute("url");
TreeNode subtn = new TreeNode();
subtn.Text = subname;
subtn.NavigateUrl = suburl;
if (node.HasChildNodes)
{
subtn.ChildNodes.Add(CreateNode(node,subtn));
}
tn.ChildNodes.Add(subtn);
}
return tn;
}
3:产生的效果图如下

4:为了去除根节点的显示,好像只能用个循环了,修改如下
/// <summary>
/// 初始化功能树结构
/// </summary>
private void InitFunction()
{
XmlDocument xmldoc = new XmlDocument();
string xmlPath = "~/adminFunction.xml";
xmlPath = Server.MapPath(xmlPath);
xmldoc.Load(xmlPath);
XmlNode root = xmldoc.DocumentElement;
foreach (XmlNode node in root.ChildNodes)
{
XmlElement subxmlEmt = node as XmlElement;
string subname = subxmlEmt.GetAttribute("name");
string suburl = subxmlEmt.GetAttribute("url");
TreeNode subtn = new TreeNode();
subtn.Text = subname;
subtn.NavigateUrl = suburl;
tvFunction.Nodes.Add(CreateNode(node, subtn));
}
}
5:显示效果如下

达到了预期的效果哦,呵呵,请问方法有什么可以改进的么?请大神各抒己见..test类别
asp.net TreeView与XML配合使用v1.1的更多相关文章
- C#TreeView读取Xml,TreeView导出到Xml
实现功能有1.根据Xml生成TreeView2.双击修改节点3.右键添加子节点或添加要节点4.右键删除当前选择的节点5.将修改后的TreeView重新生成Xml文档 其实这个主要是实现 了Xml生成T ...
- TreeView 读取 xml 显示节点
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Tree2_xml.aspx.c ...
- ASP.NET - TreeView
设置节点图片 : Windows资源管理器左侧的树型资源结构图中,各节点都有图片连接,例如磁盘的图片.光盘的图片和文件夹的图片等,使资源的表现更加形象.IEWebControls的TreeView控件 ...
- Asp.net mvc返回Xml结果,扩展Controller实现XmlResult以返回XML格式数据
我们都知道Asp.net MVC自带的Action可以有多种类型,比如ActionResult,ContentResult,JsonResult……,但是很遗憾没有支持直接返回XML的XmlResul ...
- asp .Net TreeView实现数据绑定和事件响应
最近做了一个图书馆管理系统,其中要实现中图法分类号查询,因为初学asp ,感觉还有点难度, 第一步:数据库文件 第二步 向界面中拖进TreeView控件 第三步添加事件 下面是cs文件代码 //Tre ...
- asp 使用TreeView控件
这段代码为了使用 TreeNodeCheckChanged 事件,会有回刷新的效果: 不喜欢的可查看改进版,利用js控制选择操作,无界面刷新, “http://www.cnblogs.com/GoCi ...
- ASP.NET中的XML和JSON
一.DOM简介 1.XML 定义:XML是一种跨语言.跨平台的数据储存格式 2.什么是DOM DOM(document object model)文档对象模型:是一种允许程序或脚本动态的访问更新文档内 ...
- ASP.NET MVC读取XML并使用ViewData显示
看到网上一个网友问及,无法获取XML某一个节点内容.下面Insus.NET在ASP.NET MVC环境下实现它. 先把XML文件放入App_Data目录,当然你可以放在自建目录中.打开看看它有几层,几 ...
- Silverlight TreeView 动态绑定Xml 文件
随着应用程序的不断升级,客户的需求不断增多,程序员不得不对自己的应用程序做出相应的修改,如果修改的内容较多,那么就必须找出一种简便方法,下面就为大家介绍一下在SilverLight 中左边导航栏T ...
随机推荐
- access_ok()
access_ok() 函数是用来代替老版本的 verify_area() 函数的.它的作用也是检查用户空间指针是否可用. 函数原型: access_ok (type, addr, size); 变量 ...
- ASP.NET MVC +EasyUI 权限设计(四)角色动作
请注明转载地址:http://www.cnblogs.com/arhat 由于最近的事情比较多,一直忙于工作和照顾老婆,所以老魏更新的速度慢了,本来写文章就要占据工作和生活很多的时间,这也就是院子中很 ...
- java NIO与IO的区别
nio是new io的简称,从jdk1.4就被引入了.现在的jdk已经到了1.6了,可以说不是什么新东西了.但其中的一些思想值得我来研究.这两天,我研究了下其中的套接字部分,有一些心得,在此分享. 首 ...
- 如何自定义Liferay 7 portal的Log in登录界面
前提: 1. Liferay portal 7 2. Liferay IDE 3.0.1 Liferay现有的工具中提供了很多修改portal的模板,以满足开发者的各种自定义需求. 修改的原理是利用M ...
- PrintQueue
PrintQueueCollection printQueues = null; var printServer = new PrintServer(); printQueues = printSer ...
- Ubuntu12.04 + 虚拟机VMware 9 + Secure CRT + EditPlus 本地C++开发环境搭建
1.1 软件准备 虚拟机VMware 9 Ubuntu 12.04 Secure CRT EditPlus 1.2 安装VMware 9与Ubuntu 12.04 这两个软件安装,按部就班,这里就 ...
- Binary Search Tree In-Order Traversal Iterative Solution
Given a binary search tree, print the elements in-order iteratively without using recursion. Note:Be ...
- Java Excel
http://www.cnblogs.com/mingforyou/archive/2013/08/26/3282922.html
- CentOS5下配置JDK1.6+TOMCAT6
CentOS5下配置JDK1.6+TOMCAT6 安装环境:centos 5.5+jdk1.6.0_25+tomcat6.0.32 一.下载安装jdk1.6.0_25 mkdir /usr/java ...
- linux入门教程(十) 文档的压缩与打包
在windows下我们接触最多的压缩文件就是.rar格式的了.但在linux下这样的格式是不能识别的,它有自己所特有的压缩工具.但有一种文件在windows和linux下都能使用那就是.zip格式的文 ...