treeview绑定xml
treeview绑定xml
treeview绑定xmltreeview绑定xml数据的方式
一、XmlDataSource数据源方式
XML文档的访问由XmlDataSource控件来完成,从XmlDataSource控件的DataFile属性中指定XML文档路径,然后在TreeView控件中设置与XML文档中的节点的对应关系。
实现步骤
1、XMLFile。xml文件
<?xml version="1.0" encoding="utf-8" ?>
<contact name="联系人">
<genre name="华南地区">
<person Text="负责人">
<name>张三</name>
<sex>男</sex>
<age>25</age>
<address>广州市黄浦区</address>
</person>
<person Text="负责人">
<name>李四</name>
<sex>男</sex>
<age>28</age>
<address>佛山市南海区</address>
</person>
</genre>
<genre name="华北地区">
<person Text="负责人">
<name>王五</name>
<sex>男</sex>
<age>30</age>
<address>北京市海淀区</address>
</person>
</genre>
</contact>
2、TreeView控件和XmlDataSource控件
从工具箱选择TreeView控件和XmlDataSource控件设计页面,把XmlDataSource控件DataFile属性设置成“~/App_Data/XMLFile。xml”,并把TreeView控件的DataSourceID属性设为“XmlDataSource1”。
<html>
<head runat="server">
<title>TreeView绑定XML示例</title>
</head>
<body>
<form id="form1" runat="server">
<li>
<asp:XmlDataSource ID="XmlDataSource1" runat="server"
DataFile="~/App_Data/XMLFile。xml">
</asp:XmlDataSource>
</li>
<asp:TreeView ID="TreeView1" runat="server"
DataSourceID="XmlDataSource1">
</asp:TreeView>
</form>
</body>
</html>
3、绑定XML
用编程的方式通过TreeNodeBinding对象添加节点与XML文档绑定的对应关系
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.TreeView1.ShowLines = true;
//以下是添加节点与数据源绑定的对应关系
TreeNodeBinding contact = new TreeNodeBinding();
contact.DataMember = "contact";//指定绑定的成员
contact.ValueField = "name";//取值的字段
this.TreeView1.DataBindings.Add(contact);
TreeNodeBinding genre = new TreeNodeBinding();
genre.DataMember = "genre";//添加与"地区"绑定
genre.ValueField = "name";
this.TreeView1.DataBindings.Add(genre);
TreeNodeBinding person = new TreeNodeBinding();
person.DataMember = "person";//添加与"负责人"绑定
person.ValueField = "Text";
this.TreeView1.DataBindings.Add(person);
TreeNodeBinding name = new TreeNodeBinding();
name.DataMember = "name";//添加与"名称"绑定
name.ValueField = "#InnerText";
this.TreeView1.DataBindings.Add(name);
TreeNodeBinding sex = new TreeNodeBinding();
sex.DataMember = "sex";//添加与"性别"绑定
sex.ValueField = "#InnerText";
this.TreeView1.DataBindings.Add(sex);
TreeNodeBinding age = new TreeNodeBinding();
age.DataMember = "age";//添加与"年龄"绑定
age.ValueField = "#InnerText";
this.TreeView1.DataBindings.Add(age);
TreeNodeBinding address = new TreeNodeBinding();
address.DataMember = "address";//添加与"地址"绑定
address.ValueField = "#InnerText";
this.TreeView1.DataBindings.Add(address);
}
}
备注
(1)、TreeNodeBinding类在TreeView控件中定义数据项与该数据项绑定到的节点之间的关系。该类的DataMember属性指定在节点显示的数据源对应XML的节点。ValueField属性对应TreeNode对象的Value属性。
(2)、TreeNodeBinding类的Text属性指定向用户显示的文本,如果该属性没有指定,则默认与ValueField属性相同。
(3)、TreeView控件的DataSourceID属性指定数据源控件源ID。
二、用循环方式添加节点到TreeView树中
实现步骤
1、添加包含库
using System.Web;
using System.Web.UI;
using System.Xml;
2、打开xml文件
private static XmlDocument xmlDoc;
private void openXML()
{
xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("department。xml")); //Server.MapPath("")获取绝对路径,有几种方法
}
3、使用递归方法,将xml节点填入到treeview中
private void expandTree()
{
try
{
numofChild = 0;
if(xmlDoc==null)openXML();
//初始化Treeview
TreeView2.Nodes.Clear();
TreeView2.Nodes.Add(new TreeNode(xmlDoc.DocumentElement.Name));
TreeNode tNode = new TreeNode();
tNode = TreeView2.Nodes[0];
// 将xml节点填入treeview相应位置
AddNode(xmlDoc.DocumentElement, tNode);
TreeView2.ExpandAll();
}
catch (XmlException xmlEx)
{
throw xmlEx;
}
catch (Exception ex)
{
throw ex;
}
}
private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode) //递归遍历
{
XmlNode xNode;
TreeNode tNode;
XmlNodeList nodeList;
int i;
// 遍历所有XML nodes直到到达叶子节点.
// 在循环过程中将节点添加到treeview中
if (inXmlNode.HasChildNodes)
{
nodeList = inXmlNode.ChildNodes;
for(i = 0; i<=nodeList.Count - 1; i++)
{
xNode = inXmlNode.ChildNodes[i];
inTreeNode.ChildNodes.Add(new TreeNode(xNode.Name));
inTreeNode.Value = xNode.Attributes["value"].Value;
tNode = inTreeNode.ChildNodes[i];
AddNode(xNode, tNode);
}
}
else
{
// 到达叶子节点
inTreeNode.Text = (inXmlNode.Name).Trim();
inTreeNode.Value = inXmlNode.Attributes["value"].Value;
if (int.Parse(inTreeNode.Value)>0)numofChild++; //记录节点数目,此步是本次实验需要而额外记录的
}
}
- treeview怎么加载节点(AmazeUi Tree树形结构 应用小结)
- treeview绑定xml
- pyqttreeview控件使用详解(GTK treeview原理及使用方法解析)
- 数字藏品市场有多乱 周杰伦丢了 一只猴 ,损失超300万(数字藏品市场有多乱)
- 这里输入关键词(怎么输入关键词搜索)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
热门推荐
- docker实战部署(使用docker搭建一套开发环境全家桶的详细教程)
- tomcat配置远程调试(一次tomcat源码启动控制台中文乱码的调试过程记录)
- escape()、encodeURI()、encodeURIComponent()区别
- dedecms搜索功能怎么设置详细(删除dedecms 5.7里面烦人的织梦链的方法)
- python函数使用方法高级用法(Python骚操作之动态定义函数)
- mysqlshell日常运维脚本(监控MySQL主从状态的shell脚本)
- ssl专用安全协议(网站启用https后的SSL的安全配置和检测)
- sql server日志备份查看(sql server数据库高可用日志传送的方法)
- docker挂载的注意事项(解决docker日志挂载的问题)
- php实现redis核心代码(PHP结合Redis+MySQL实现冷热数据交换应用案例详解)