日期:2014-05-19  浏览次数:20449 次

treeview 树目录产生
数据库表中有ID,ParentId,name字段
通过递归函数产生树型目录
谁有简练易懂的代码阿,谢谢!!

------解决方案--------------------
if(!IsPostBack)
{
TreeView1.Nodes.Clear();
SqlDataReader dr=db.ExecuteSql( "select * from 数据库表 ");
while(dr.Read())
{
TreeNode newNode=new TreeNode();
newNode.Text = dr[ "ID "].ToString();
newNode.ID = dr[ "name "].ToString();
InitTree(newNode.Nodes, "0 ");
}
}
======================================

private void InitTree(TreeNodeCollection Nds,string parentId)
{
DataRow[] rows;
rows=ds.Tables[0].Select( "parentId= ' "+parentId+ " ' ");
TreeNode temNd;
foreach(DataRow row in rows)
{
temNd=new TreeNode();
temNd.ID=row[ "Id "].ToString();
temNd.Text=row[ "Name "].ToString();
Nds.Add(temNd);
InitTree(temNd.Nodes,temNd.ID);
}
}

=================
没测试 大概是这个意思 根节点为0


------解决方案--------------------
//.net2.0 递归实现 数据库读取改成自己的即可
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;


public partial class _Default : System.Web.UI.Page
{
private string connstring = ConfigurationManager.ConnectionStrings[ "ConnStr "].ToString();

private bool isHaveCheckBox = false;
private bool isExpanded = false;
private DataTable dtTree = null;
protected void Page_Load(object sender, EventArgs e)
{
//Response.Write( "tttttttttt ");
if (!IsPostBack)
{
AreaTree.Nodes.Add(getRootAreaTreeNode(false, false));
}

}

/// <summary>
/// 获取包含全部子节点的根节点数据
/// </summary>
/// <param name= "haveCheckBox "> 节点是否产生CheckBox </param>
/// <param name= "expanded "> 节点是否展开 </param>
/// <returns> </returns>
public TreeNode getRootAreaTreeNode(bool haveCheckBox, bool expanded)
{
//drPeng.HS.BR.AreaTree brTree = new drPeng.HS.BR.AreaTree();

string rootID = "0001 ";//brTree.getRootAreaTreeID();
string rootName = "中国 ";//brTree.getRootAreaTreeName();
//ds = brTree.getAllAreaTree();

isHaveCheckBox = haveCheckBox;
isExpanded = expanded;

#region populate root node
TreeNode rootNode = new TreeNode();
rootNode.Text = rootName;
rootNode.Value = rootID;
//rootNode. = rootName;
// rootNode.NodeData = "0001 ";

rootNode.Expanded = true;
// rootNode.CheckBox = isHaveCheckBox;
#endregion

DataSet dsTree = SqlHelper.ExecuteDataset(connstring, CommandType.Text, "select * from TB_Area ");
dtTree = dsTree.Tables[0];
this.populateAreaTree(rootID, rootNode);

return rootNode;
}

private void populateAreaTree(string parentID, TreeNode pNode)
{

DataRow[] dRows = dtTree.Select( "ParentAreaCode= ' " + parentID + " ' ");

if (dRows.Length > 0)