自定义 XML 文件在 TreeView 控件中的使用
2008-04-24 08:58
465 查看
在 Asp.Net 中,可以很方便地使用由微软提供的 Internet Exploer Web Controls 控件来实现树形列表。由微软提供的这套控件集合中包括有 MultiPage,TabStrip,Toolbar,TreeView 四个控件。
关于这几个控件的使用在微软的网站由详细的说明(参见:TreeViewiewebcontrol.asp">http://www.microsoft.com/china/msdn/archives/library/dnaspp/html/aspnet-usingTreeViewiewebcontrol.asp; http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/overview/overview.asp)。
在微软提供的文档中 TreeView 控件支持 XML 文件作为资源文件(XML 文件的结构本来就是一种树型结构),关于在 TreeView 控件中如可使用 XML 文件,很多资料有详细的介绍(http://www.yesky.com/SoftChannel/72342380468043776/20040630/1825811.shtml),本文介绍的则是用另外一种方式解析 XML 文件到 TreeView 控件中。
因为该方法是我在没有找到资料的情况下为了方便使用该控件而自行写的一个处理过程,其实在使用的时候已经大不可必,写出来,只是出于共同学习的目的。
在拿到这个控件的时候,我对其使用方法是不大了解的,但为了让自己在以后的程序中能够较为方便的使用之,所以我决定采用使用 XML 文件的方式以存储节点信息,所以首先我构建了一个 XML 文件基本格式:
XML version="1.0" encoding="UTF-8"?><?XML version="1.0" encoding="UTF-8"?><TreeView> <nodes> <text>根节点</text> <link></link> <target>_self</target> <description></description> <node> <text>测试节点 -1</text> <link>/test1.aspx</link> <target>MainFrame</target> <description></description> </node> <node> <text>测试节点 - 2</text> <link>/test2.aspx</link> <target>_top</target> <description></description> </node> </nodes></TreeView>
TreeView>TreeView 为根结点,nodes 为父级节点,node 为子节点。其中 nodes 可以嵌套,可以并行,node 只能并行。在定义好结构后,最主要的就是如何解析了。下面是具体的代码:
/// /// TreeViewParse TreeView解析器,从XML文件中读取节点值 /// document XML文档 /// TreeView Microsoft.Web.UI.WebControls.TreeView /// private void TreeViewParse(System.XML.XMLNode document, Microsoft.Web.UI.WebControls.TreeView TreeView) { if(document.Name != "TreeView") return; foreach(System.XML.XMLNode node in document.ChildNodes) { if(node.Name != "nodes") return; this.NodesParse(node, TreeView, null); } }
/// /// NodesParse Nodes解析器,从XML文件中读取主节点值 /// document XML文档 /// TreeView Microsoft.Web.UI.WebControls.TreeView /// treeNode 父级节点 /// private void NodesParse(System.XML.XMLNode document, Microsoft.Web.UI.WebControls.TreeView TreeView, Microsoft.Web.UI.WebControls.TreeNode treeNode) { if(document.Name != "nodes") return; Microsoft.Web.UI.WebControls.TreeNode child = new Microsoft.Web.UI.WebControls.TreeNode(); foreach(System.XML.XMLNode node in document.ChildNodes) { string name = (node.Name != null ? node.Name : ""); // child.ID = node.Name + "_" + TreeView.Nodes.Count.ToString(); switch(name.Trim().ToLower()) { case "text": child.Text = node.InnerText; break; case "link": child.NavigateUrl = node.InnerText; break; case "target": child.Target = node.InnerText; break; case "nodes": NodesParse(node, TreeView, child); break; case "node": NodeParse(node, TreeView, child); break; } } if(treeNode == null) TreeView.Nodes.Add(child); else treeNode.Nodes.Add(child); }
/// /// NodeParse Node解析器,从XML文件中读取子节点值 /// document XML文档 /// TreeView Microsoft.Web.UI.WebControls.TreeView /// treeNode 父级节点 /// private void NodeParse(System.XML.XMLNode document, Microsoft.Web.UI.WebControls.TreeView TreeView, Microsoft.Web.UI.WebControls.TreeNode treeNode) { Microsoft.Web.UI.WebControls.TreeNode child = new Microsoft.Web.UI.WebControls.TreeNode(); foreach(System.XML.XMLNode node in document.ChildNodes) { string name = (node.Name != null ? node.Name : ""); switch(name.Trim().ToLower()) { case "text": child.Text = node.InnerText; break; case "link": child.NavigateUrl = node.InnerText; break; case "target": child.Target = node.InnerText; break; case "nodes": NodesParse(node, TreeView, child); break; } } treeNode.Nodes.Add(child); }
以下是使用方法:
private Microsoft.Web.UI.WebControls.TreeView MSTreeView = new Microsoft.Web.UI.WebControls.TreeView(); System.XML.XMLDocument document = new System.XML.XMLDocument(); // document.Load(System.Web.HttpContext.Current.Server.MapPath(this.XMLDocument)); MSTreeView.Nodes.Clear(); TreeViewParse(document.DocumentElement, MSTreeView);
到此,基本结束,此时就可以在页面正确显示自行定义的 XML 文档的树目录,但我还不认为方便,于是将其综合后写成了一个组件,于是在使用的时候只需拖放到页面上……但后来在找资料的时候找到了其实 TreeView 控件本身就可以直接使用 XML 文档(http://www.yesky.com/SoftChannel/72342380468043776/20040630/1825811.shtml)。所以,这个方法就只能是一段用以学习的代码了!
关于这几个控件的使用在微软的网站由详细的说明(参见:TreeViewiewebcontrol.asp">http://www.microsoft.com/china/msdn/archives/library/dnaspp/html/aspnet-usingTreeViewiewebcontrol.asp; http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/overview/overview.asp)。
在微软提供的文档中 TreeView 控件支持 XML 文件作为资源文件(XML 文件的结构本来就是一种树型结构),关于在 TreeView 控件中如可使用 XML 文件,很多资料有详细的介绍(http://www.yesky.com/SoftChannel/72342380468043776/20040630/1825811.shtml),本文介绍的则是用另外一种方式解析 XML 文件到 TreeView 控件中。
因为该方法是我在没有找到资料的情况下为了方便使用该控件而自行写的一个处理过程,其实在使用的时候已经大不可必,写出来,只是出于共同学习的目的。
在拿到这个控件的时候,我对其使用方法是不大了解的,但为了让自己在以后的程序中能够较为方便的使用之,所以我决定采用使用 XML 文件的方式以存储节点信息,所以首先我构建了一个 XML 文件基本格式:
XML version="1.0" encoding="UTF-8"?><?XML version="1.0" encoding="UTF-8"?><TreeView> <nodes> <text>根节点</text> <link></link> <target>_self</target> <description></description> <node> <text>测试节点 -1</text> <link>/test1.aspx</link> <target>MainFrame</target> <description></description> </node> <node> <text>测试节点 - 2</text> <link>/test2.aspx</link> <target>_top</target> <description></description> </node> </nodes></TreeView>
TreeView>TreeView 为根结点,nodes 为父级节点,node 为子节点。其中 nodes 可以嵌套,可以并行,node 只能并行。在定义好结构后,最主要的就是如何解析了。下面是具体的代码:
/// /// TreeViewParse TreeView解析器,从XML文件中读取节点值 /// document XML文档 /// TreeView Microsoft.Web.UI.WebControls.TreeView /// private void TreeViewParse(System.XML.XMLNode document, Microsoft.Web.UI.WebControls.TreeView TreeView) { if(document.Name != "TreeView") return; foreach(System.XML.XMLNode node in document.ChildNodes) { if(node.Name != "nodes") return; this.NodesParse(node, TreeView, null); } }
/// /// NodesParse Nodes解析器,从XML文件中读取主节点值 /// document XML文档 /// TreeView Microsoft.Web.UI.WebControls.TreeView /// treeNode 父级节点 /// private void NodesParse(System.XML.XMLNode document, Microsoft.Web.UI.WebControls.TreeView TreeView, Microsoft.Web.UI.WebControls.TreeNode treeNode) { if(document.Name != "nodes") return; Microsoft.Web.UI.WebControls.TreeNode child = new Microsoft.Web.UI.WebControls.TreeNode(); foreach(System.XML.XMLNode node in document.ChildNodes) { string name = (node.Name != null ? node.Name : ""); // child.ID = node.Name + "_" + TreeView.Nodes.Count.ToString(); switch(name.Trim().ToLower()) { case "text": child.Text = node.InnerText; break; case "link": child.NavigateUrl = node.InnerText; break; case "target": child.Target = node.InnerText; break; case "nodes": NodesParse(node, TreeView, child); break; case "node": NodeParse(node, TreeView, child); break; } } if(treeNode == null) TreeView.Nodes.Add(child); else treeNode.Nodes.Add(child); }
/// /// NodeParse Node解析器,从XML文件中读取子节点值 /// document XML文档 /// TreeView Microsoft.Web.UI.WebControls.TreeView /// treeNode 父级节点 /// private void NodeParse(System.XML.XMLNode document, Microsoft.Web.UI.WebControls.TreeView TreeView, Microsoft.Web.UI.WebControls.TreeNode treeNode) { Microsoft.Web.UI.WebControls.TreeNode child = new Microsoft.Web.UI.WebControls.TreeNode(); foreach(System.XML.XMLNode node in document.ChildNodes) { string name = (node.Name != null ? node.Name : ""); switch(name.Trim().ToLower()) { case "text": child.Text = node.InnerText; break; case "link": child.NavigateUrl = node.InnerText; break; case "target": child.Target = node.InnerText; break; case "nodes": NodesParse(node, TreeView, child); break; } } treeNode.Nodes.Add(child); }
以下是使用方法:
private Microsoft.Web.UI.WebControls.TreeView MSTreeView = new Microsoft.Web.UI.WebControls.TreeView(); System.XML.XMLDocument document = new System.XML.XMLDocument(); // document.Load(System.Web.HttpContext.Current.Server.MapPath(this.XMLDocument)); MSTreeView.Nodes.Clear(); TreeViewParse(document.DocumentElement, MSTreeView);
到此,基本结束,此时就可以在页面正确显示自行定义的 XML 文档的树目录,但我还不认为方便,于是将其综合后写成了一个组件,于是在使用的时候只需拖放到页面上……但后来在找资料的时候找到了其实 TreeView 控件本身就可以直接使用 XML 文档(http://www.yesky.com/SoftChannel/72342380468043776/20040630/1825811.shtml)。所以,这个方法就只能是一段用以学习的代码了!
相关文章推荐
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- 自定义SeekBarPreference控件(老外出品,直接在preferences文件中使用,无需其他代码)
- 使用draggablegridview开源库添加自定义控件可以显示,添加自定义的layout文件可以显示背景色但是无法显示其控件
- 如何自定义布局文件中,控件对数据源中对数据的使用方式
- 【spring boot logback】日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么
- 使用透明度自定义文件上传控件样式
- 使用TreeView和listView控件查看本机磁盘文件夹及文件(WinForm)
- android自定义Button,通过在XML布局文件里直接使用自定义参数
- 在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip)。一般情况下,我们都会选择使用dp,这样可以保证不同屏幕分辨率的机器上布局一致。但是在代码中,如何处理呢?很多控件的方法中都只提供了
- android的XML布局文件上使用自定义的类
- 谷歌验证码非web.xml非servlet拦截 使用配置文件自定义加载,防止多次点击(防js攻击)
- NSIS ---使用nsDialogs创建自定义页面,并获取输入到控件中的内容保存到一个XML文档中
- 在android style.xml文件中使用自定义属性
- 【spring boot logback】日志颜色渲染,使用logback-spring.xml自定义的配置文件后,日志没有颜色了
- 使用TreeView和listView控件查看本机磁盘文件夹及文件(WinForm)
- duilib中加入自己定义控件之后怎么可以在xml文件里配置使用
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- [Android]自定义组件示例:使用attrs.xml文件定制RadioButton