现在的位置: 首页 > 综合 > 正文

在 ASP.NET 页面中使用 TreeView 控件

2012年02月12日 ⁄ 综合 ⁄ 共 2921字 ⁄ 字号 评论关闭
遍历节点 
void GetAllNodeText(TreeNodeCollection tnc) 

 
foreach(TreeNode node in tnc) 
 

  
if(node.Nodes.Count!=0
   GetAllNodeText(node.Nodes); 
  Response.Write(node.Text 
+ " "); 
 }
 
}
 

建树 
private void CreateTree(TreeNodeCollection folderTreeNodeCollection , string parentID) 

  
if (parentID==""
  

    dv.RowFilter
= "ParentID is null"
  }
 
  
else 
  

    dv.RowFilter
= "ParentID="+"'"+parentID+"'"
  }
 
  
foreach (DataRowView drv in dv) 
  

    TreeNode tn
= new TreeNode(); 
    tn.Expanded
= true ; 
    tn.ID
=drv.Row["TypeID"].ToString().Trim(); 
    tn.Text
=drv.Row["TypeName"].ToString().Trim(); 
    folderTreeNodeCollection.Add(tn); 
    CreateTree(tn.Nodes,tn.ID); 
  }
 
}
 

遍历选中节点 
private void getAllCheckedNode(TreeNodeCollection tnc) 

  
foreach (TreeNode tn in tnc) 
  

    
if (tn.Checked== true ) 
    

      Response.Write(tn.Text
+””); 
    }
 
    
if (tn.Nodes.Count>0
    

      getAllCheckedNode(tn.Nodes); 
    }
 
  }
 
}
 

选中或取消选中节点 , 自动选中或取消选中期子节点 
private void CheckedChildNode(TreeNode tn) 

  
if (tn.Nodes.Count>0
  

    
foreach (TreeNode tnn in tn.Nodes) 
    

      tnn.Checked
=tn.Checked; 
      CheckedChildNode(tnn); 
    }
 
  }
 
}
 

调用方法
private void TreeView1_Check( object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e) 

    setAllCheckedNode(TreeView1.GetNodeFromIndex(e.Node)); 
}
 

1、全部读取并一次性展现

    

           private void Page_Load(object sender, System.EventArgs e)

           {

                if(IsPostBack)

                {

                     return;

                }

                DBSystem.ExecuteSQL tmp = new DBSystem.ExecuteSQL("T");

                DataTable dt = tmp.GetDataTable("select * from TreeView");//从数据库抓出数据

                this.AddNodes(dt,null,"0");   //添加节点

                this.TreeView1.SelectedNodeIndex="";   //不选中任何节点。

/*下一节将介绍如何修改TreeView.cs 源码来取消默认选中节点的方法*/

           }

 

           /// <summary>

           /// 添加节点及其包含的子节点

           /// </summary>

           /// <param name="dt">从数据库抓出的 DataTable</param>

           /// <param name="node">将要添加子节点的父节点</param>

           /// <param name="id">父节点的 ID,“0 为根节点</param>

           private void AddNodes(DataTable dt,TreeNode node,string id)

           {

                DataRow[] rows = dt.Select("ParentID="+id); //筛选出属于父节点 node”的子节点集合

                foreach(DataRow dr in rows) //循环子节点集合

                {

                     TreeNode nd = new TreeNode();

                     nd.NavigateUrl=dr["URL"].ToString(); //设置浏览的网址

                     nd.NodeData=dr["NodeID"].ToString(); //存放节点 ID

                     nd.Text=dr["NodeName"].ToString();   //设置节点名称

                     this.AddNodes(dt,nd,nd.NodeData);    //递归,添加该节点的子节点

                     if(node==null || id=="0")

                     {

                           this.TreeView1.Nodes.Add(nd);    //添加至根节点

                     }

                     else

                     {

                           node.Nodes.Add(nd);              //添加子节点

                     }

                }

2、       展开节点时读取该节点的数据

TreeView 控件属性→ 自动提交(AutoPostBack True

TreeView 控件属性→ 事件 双击展开(Expand

抱歉!评论已关闭.