利用TreeList加载XML文件

这篇博客介绍了如何将XML文件读取到DataTable,并利用TreeList的KeyFieldName和ParentFieldName属性建立树形结构。通过创建包含ID和ParentID的表,遍历XML节点,逐级添加到DataTable中,最终将数据绑定到TreeList。

第一次学习弄,也是上网看别人的思路,主要就是首先将XML读取到表里面,然后利用TreeList的两个属性:KeyFieldName和ParentFieldName两个属性的值,默认分别是ID,ParentID,二者的关系就是涉及到树形结构的层次关系。所创建的表中务必要包含二两个属性。下面上代码:
            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);
            int Id = 1;
            int ParentId=0;
            //获取根节点
            XmlElement xmlRootElement=xmlDoc.DocumentElement;
            DataRow dr = dt.NewRow();
            dr["ID"] = Id++;
            dr["ParentID"] = 0;
            dr["节点名称"] = xmlRootElement.Name.ToString();
            dt.Rows.Add(dr);
            XmlNodeList xmlNodeList = xmlRootElement.ChildNodes;
            foreach (XmlElement xmlElement in xmlNodeList)
            {
                dr = dt.NewRow();
                dr["ID"] = Id++;
                dr["ParentID"] = ParentId;
                dr["节点名称"] = xmlElement.Name.ToString();
                dt.Rows.Add(dr);
                int parentId = Id-1;
                //遍历该节点下面的子节点
                XmlNodeList ChildNodeList = xmlElement.ChildNodes;
                foreach (XmlNode xmlNode in ChildNodeList)
                {
                    dr = dt.NewRow();
                    dr["ID"] = Id++;
                    dr["ParentID"] = parentId;
                    dr["节点名称"] = xmlNode.Name.ToString();
                    dt.Rows.Add(dr);
                }        
            }
      this.treeList1.DataSource=dt;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值