第三方控件DevExpress的TreeList绑定XML文件
研究了两天,网上也看了不少资料,但都是静态绑定到TreeList,就是在已知道表的情况下进行绑定,表中已经把KeyFieldName和ParentFieldName的关系确定好了,比较死板。我需要的功能是自动根据XML进行确定KeyFieldName和ParentFieldName关系。所以确定二者关系就比较麻烦,我现在只能实现对三层的XML文件进行显示,四层的还会出错,正在进一步改进,记录如下:(草稿形式,不很规范,谅解)
private void btnOpenFile_Click(object sender, EventArgs e)
{
OpenFileDialog openFile = new OpenFileDialog();
openFile.Title = "打开XML文件";
openFile.Filter = "XML文件(*.xml)|*.xml";
openFile.InitialDirectory = "C:\\";
openFile.ShowDialog();
string filepath = openFile.FileName;
this.treeList1.DataSource = SelectXml(filepath);
}
public static int parentId;
public static int Id;
private DataTable SelectXml(string xmlPath)
{
DataTable dt = new DataTable();
DataColumn did = new DataColumn("ID", Type.GetType("System.Int32"));
DataColumn dParentID = new DataColumn("ParentID", Type.GetType("System.Int32"));
DataColumn dNodeName = new DataColumn("节点名称", Type.GetType("System.String"));
dt.Columns.Add(did);
dt.Columns.Add(dParentID);
dt.Columns.Add(dNodeName);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
//初始ID,ParentID
Id = 1;
parentId = 1;
//获取根节点
XmlElement xmlRootElement = xmlDoc.DocumentElement;
DataRow dr = dt.NewRow();
dr["ID"] = Id;
dr["ParentID"] = 0;
dr["节点名称"] = xmlRootElement.Name.ToString();
dt.Rows.Add(dr);
Id++;
int Id1 = Id,pId;
int b = parentId, d = Id; //记录递归后的ID,ParentId变化
XmlNodeList xmlNodeList = xmlRootElement.ChildNodes;
foreach (XmlElement xmlElement in xmlNodeList)
{
XmlNode xmlnode = (XmlNode)xmlElement;
dr = dt.NewRow();
dr["ID"] =d;
dr["ParentID"] = parentId;
dr["节点名称"] = xmlnode.Name.ToString();
dt.Rows.Add(dr);
Id1 = d;
pId = b+1;
sort(xmlnode, Id1,pId,dt,ref d,ref b); //利用ref记录随时变化
}
return dt;
}
private void sort(XmlNode xmlnode, int ID,int parentId,DataTable dt,ref int d,ref int b)
{
if (xmlnode.HasChildNodes)
{
XmlNodeList ChildNodeList = xmlnode.ChildNodes;
foreach (XmlNode xmlNode in ChildNodeList)
{
if (xmlNode.NodeType == XmlNodeType.Text)
{
Id = Id - 1;
ID = ID + 1;
continue;
}
else
{
ID = ID + 1;
DataRow dr = dt.NewRow();
dr["ID"] = ID;
dr["ParentID"] = parentId;
dr["节点名称"] = xmlNode.Name.ToString();
Id = Id + 1;
dt.Rows.Add(dr);
sort(xmlNode,ID, Id - 1, dt,ref d,ref b);
}
}
}
d=ID+1;
b = ID;
}
转载于:https://www.cnblogs.com/dengshiwei/p/4258795.html
第三方控件DevExpress的TreeList绑定XML文件相关推荐
- BCB6无XMLDOC控件下生成及保存XML文件
某个项目需要将数据保存为XML文件,但是BCB6没安装XMLDOC,想下载安装包也难找,于是就在网上查了些资料,不使用XMLDOC的情况下生成和保存XML文件. 包含头文件: #include < ...
- 教程-Delphi第三方控件安装卸载指南
1 只有一个DCU文件的组件.DCU文件是编译好的单元文件,这样的组件是作者不想把源码公布.一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会出现错误.也正是因为没有源 ...
- edptrayicon怎么卸载_教程-Delphi第三方控件安装卸载指南
1 只有一个DCU文件的组件.DCU文件是编译好的单元文件,这样的组件是作者不想把源码公布.一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会出现错误.也正是因为没有源 ...
- DevExpress 第三方控件汉化
DevExpress 第三方控件汉化的全部代码和使用方法 DevExpress.XtraEditors.Controls 此控件包中包含的控件最多,包括文本框,下拉列表,按钮,等等 D ...
- 学习笔记---母板页、用户控件、第三方控件及视图状态管理
一.母版页 在制作页面的过程中, 多个页面往往具有相同的页面Header和页面Footer, 多个页面只是在中间部分有变化. 那么我们完全可以避免在每个页面中都写一遍页头和页尾的代码, 这种技术就是母 ...
- android组件用法说明,Android第三方控件PhotoView使用方法详解
Android第三方控件PhotoView使用方法详解 发布时间:2020-10-21 15:06:09 来源:脚本之家 阅读:74 作者:zhaihaohao1 PhotoView的简介: 这是一个 ...
- SmartImage图片第三方控件android
1.新建 :SmartImageDemo\app\src\main\res\xml\network_security_config.xml 该配置用于HTTP请求 <?xml version=& ...
- DXperience皮肤设置 C#第三方控件学习笔记
用过DXperience .net版本以后,我发现这是个不错第三方控件.简单的说,就是开发软件用的界面库,支持VB和C#语言,至于其它语言我没有了解过.如果还有人问界面库又是什么?那就顺便也说一下.界 ...
- WPF第三方控件盘点
WPF统一的编程模型.语言和框架,实现了界面设计人员和开发人员工作可以分离的境界,鉴于WPF强大的优势,且一直是开发者关注的地方,下面和大家分享基于WPF项目开发需要用到的第三方控件,包括业界最受好评 ...
最新文章
- 记windows平台使用vscode 搭建linux c++开发环境
- STP HSRP和NAT结合实现网络出口的冗余和次优路径分析
- html 手动添加thead,HTML表格 - 我可以在thead之前添加额外的tbody吗?
- 正则表达式的三种模式【贪婪、勉强、侵占】的分析
- Google I/O 2019大会 Android主题会议
- 外贸注意:出口这些新兴市场国家政策有变化
- Linux制作软盘镜像
- Python TKinter下拉日历控件
- 亚当·斯密 传奇一生
- 《面试无忧》--DCL单例模式为什么要用volatile修饰?
- 1.01.21盒子模型,浮动,定位
- Linux入门到精通
- v-model的基本使用
- 日常英语单词学习-A Family Tree
- 哈哈,又找到几个强大的html5+css3的动画效果
- 东软python培训班
- ELK环境搭建+入门使用
- windows terminal 的强力美化和设置
- hdu6599 I Love Palindrome String
- 信息学奥赛真题解析(小凯的疑惑)