当前位置:编程学习 > C#/ASP.NET >>

treeview删除节点asp.net代码

treeview删除节点asp教程.net代码
private bool isin(treenodecollection tnodes,string s)
        {
            foreach (treenode td in tnodes)
            {
                if (td.name == s) return true;
                if (td.nodes.count > 0)
                    if (isin(td.nodes, s)) return true;
            }
            return false;

        }

//实例方法

private void addtreenode()
{
//判断是否有重名
  if(traversetreenode(string rename))
  {
    messagebox.show("该节点已经存在!", "提示");
  }
  else
  {
      //添加节点(不知道你想查入哪里)
  } 
}
private bool traversetreenode(string rename)
{
  //添加节点和当前节点的子节点之间是否有重名
  if (this.treeroom.selectednode.nodes.count > 0)
  {
      foreach (treenode node in this.treeroom.selectednode.nodes)
      { 
          if (rename == node.text)
                return true;
      }
      return false;
    }
    //添加节点和当前节点的同级节点之间是否有重名(前提当前节点的父节点存在)       
  else if (this.treeroom.selectednode.parent.nodes.count > 0)
    {     
        foreach (treenode node in this.treeroom.selectednode.parent.nodes)
      {
          if (rename.compareto(node.text) == 0)
              return true;
      }
      return false;
    }
}
问题2:删除treeview节点时如果存在子节点,则不允许删除
private void deltreenode()
{
//判断是否有子节点
  if(this.treeroom.selectednode.nodes.count>0)
  {
    messagebox.show("该节点包含子节点!", "提示");
  }
  else
  {
    //移除当前节点
    this.treeroom.selectednode.remove();
  } 
}
补充:
  问题1:不知道你添加节点重名判断是否在整棵树里面,如果那样需要遍历整棵树。       
private bool traversetreenode(string rename)
{
  bool flag = false;
  foreach (treenode node in treeroom.nodes.nodes)
  {
    if(node.nodes.count>0)
      {
          flag = traversetreenode(rename);
          if(flag)
            return true; 
      }       
    else
      {
          if (rename.equals(node.text))
            return true;
      }
    }
  return false;
}

//

送一个找node的函数

///   <summary>  
    ///     遍历树形控件,找到text为code的节点。采用递归算法  
    ///   </summary>  
    ///   <param   name="nodes">要查找的节点集合</param>  
    ///   <param   name="parentcode">匹配条件,为节点的text</param>  
    ///   <returns></returns>  
    private treenode findnodebycode(treenodecollection nodes, string code)
    {

        if (nodes.count == 0)
            return null;

        foreach (treenode node in nodes)
        {
            //判断此节点是否是目标  
            if (node.text.tostring() == code.trim())
                return node;

            //此节点是否有子节点  
            treenode node_2;
      
            if (node.childnodes.count != 0)
            {
                //有子节点,则开始递归调用  
                node_2 = findnodebycode(node.childnodes, code);
            }
            else
            {
                //无子节点  
                node_2 = null;
            }
            //如果递归找到了目标,则返回目标  
            if (node_2 != null)
                return node_2;

            //此节点及节点的子节点(包括所有的子节点)都不包含目标,进行下一个节点的循环  
        }

        //遍历了所有节点,没找到目标,只好返回null  
        return null;

    }
}

补充:asp.net教程,.Net开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,