ASP.net 中关于控件Treeview的操作------ 节点查找、删除和添加

    技术2022-05-11  3

    1、  节点查找:

    首先要看以什么方式查找,比如是以节点的索引查找,还是以节点的名称或是其他条件查找?本项目中,到目前为止,我考虑的是以节点的名称准确匹配,查找递归函数如下:

     

      public  TreeNode RuleFind(string strFind)

        {

          TreeNode tnRet = null;

          foreach(TreeNode tn in TreeView1.Nodes) )//Treeview1:查找树 

             {

                tnRet = RuleFindNode(tn, strFind.Trim());

                if (tnRet != null)

                    break;        

            }    

            return tnRet;

        }

     

       private TreeNode RuleFindNode(TreeNode tnParent, string strValue)//递归查找树型节点

        {

             if (tnParent == null) return null;

          

            if (tnParent.Text.Trim() == strValue)

            {

                ExpandParent(tnParent); )//调用节点展开函数         

                tnParent.Selected = true;        

                return tnParent;

            }   

           

            TreeNode tnRet = null;

     

            foreach (TreeNode tn in tnParent.ChildNodes)// tnParent.Nodes)

            {

                tnRet = RuleFindNode(tn, strValue);

                if (tnRet != null)   break;

            }      

            return tnRet;

     

    }

    另外为了使操作者一目了然,还需要节点展开函数(当然,如果树本身是展开的就无所谓了):

      protected void ExpandParent(TreeNode node)//递归展开父节点

      {  

          if (node.Parent != null)

          {

              node.Parent.Expanded = true;     

              node.Parent.Expand();

              ExpandParent(node.Parent);

           }

    }

    2、  节点添加:

          public void AddNewNode(TreeNode nodeNew)

        {

              //  TreeNode nodeNew = new TreeNode("NewNode");// 新建节点对象

            nodeNew.Selected = true;

            if (TreeView1.SelectedNode == null)

                return;

            switch (TreeView1.SelectedNode.Depth) //节点深度选择

            {

                case 0:

                case 1:          

                case 6:

                    Response.Write("Not allow to  add");

                    break;

                default:

                  TreeView1.SelectedNode.ChildNodes. Add(nodeNew);

                    break;

            }      

    }

    从本函数看来,此树除了0、1 、6外都是可添加的节点。

    3、  节点删除:

    public void RemoveNode(TreeNode node)

      {

          if (node == null)

                return;

            TreeNode parentNode = nodeNew.Parent;

         parentNode.ChildNodes.Remove( node);

    }


    最新回复(0)