TreeView绑定XML文档

     终于把TreeView绑定XML文档不显示根节点的问题解决了,就这问题耗费我有一段时间了.总是出现根节点.在绑定TreeView时我自己写了一个方法,这个方法是对定制的XML文档而言的.方法代码如下:

   

  绑定TreeView控件

上面蓝色字体是关键,主要用到了树属性中的XPath对显示条件进行筛选.从XML文档的第二级节点开始显示.

绑定TreeView过程中还可以用循环方式添加节点到树中.方法如下:

  

   private   void  ShowElement()
    
{
        
string xmlpath = Server.MapPath("."+ "/TreeMenu/TreeMenu.xml";
        XmlDocument xmlDoc 
= new XmlDocument();
        xmlDoc.Load(xmlpath);
        XmlNodeList nodeList 
= xmlDoc.SelectSingleNode("TreeNodes").ChildNodes;//获取TreeNodes节点的所有子节点
        
//定义三个节点
        TreeNode treenode;
        TreeNode nodes;
        TreeNode node;
        
//循环获取节点中属性ID的值
        foreach (XmlNode xn in nodeList)//遍历所有子节点
        {
            XmlElement xe 
= (XmlElement)xn;//将子节点类型转换为XmlElement类型
            for (int m = 0; m < 3; m++)
            
{

                
if (xe.GetAttribute("ID"== m.ToString())//如果ID属性值为m的值
                {
                    treenode 
= new TreeNode(xe.GetAttribute("Text").ToString(),"","",xe.GetAttribute("URL").ToString(),"");

                    
this.TreeView1.Nodes.Add(treenode); //为树添加1级节点

                    
//Response.Write(xe.GetAttribute("Text").ToString() + "</br>");

                    
//如果下面有子节点在下走
                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                    foreach (XmlNode xn1 in nls)//遍历
                    {
                        XmlElement xe2 
= (XmlElement)xn1;//转换类型
                        if (xe2.Name == "Nodes")//如果找到
                        {
                            
for (int i = 0; i < nls.Count; i++)
                            
{
                                
//为2级节点添加子元素
                                nodes = new TreeNode(nls.Item(i).Attributes[0].Value, """", nls.Item(i).Attributes[1].Value, "");
                                treenode.ChildNodes.Add(nodes);
                                
//this.TreeView1.Nodes.Add(nodes);
                                
//Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + nls.Item(i).Attributes[0].Value + "</br>");
                                
//如果下面有子节点再下走
                                XmlNodeList nls1 = xe2.ChildNodes;//继续获取xe2子节点的所有子节点
                                foreach (XmlNode xn2 in nls1)//遍历
                                {
                                    XmlElement xe3 
= (XmlElement)xn2;//转换类型
                                    if (xe3.Name == "Node")//如果找到
                                    {
                                        
for (int j = 0; j < nls1.Count; j++)
                                        
{
                                            
//为3级节点添加子节点
                                            node = new TreeNode(nls1.Item(j).Attributes[0].Value, """", nls.Item(i).Attributes[1].Value, "");
                                            nodes.ChildNodes.Add(node);
                                            
//Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + nls1.Item(j).Attributes[0].Value + "</br>");
                                        }

                                        
break;
                                    }

                                }

                            }

                            
break;
                        }

                    }

                    
break;
                }

            }

        }

    }

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值