最好有代码,如不行,用什么方法实现啊,
急
这是我的一个建树的函数,是直接写的树,因为数据库的原因,所以没有用递归来写,你自己可以试着写递归,库小的话比较快
/* *********************************
* 函数名:BuildTree
* 功 能:生成Tree
* 输 入:安全评价项目库的版本
* 输 出:无错,返回tree,出错,返回false
* *********************************/
public bool BuildTree(ref Microsoft.Web.UI.WebControls.TreeView refTreeView,int EditionID)
{
try
{
refTreeView.Nodes.Clear();
SqlConnection myConnection = new SqlConnection(SQLConnectStr());
string SqlCmd = "select * from 安全评价项目库版本 where 编号="+EditionID+"";
SqlDataAdapter Adapter = new SqlDataAdapter(SqlCmd,myConnection);
DataSet ds = new DataSet();
Adapter.Fill(ds,"安全评价项目库版本");
DataView dv = new DataView();
dv.Table=ds.Tables["安全评价项目库版本"];
Microsoft.Web.UI.WebControls.TreeNode tmpNd;
foreach (DataRowView drv in dv)
{
tmpNd = new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd.ID=drv["编号"].ToString().Trim();
tmpNd.Text=drv["版本名称"].ToString().Trim();
refTreeView.Nodes.Add(tmpNd);//添加根节点
string SqlCmd_1 = "select * from 安全评价项目库1";
SqlDataAdapter Adapter_1 = new SqlDataAdapter(SqlCmd_1 , myConnection );
DataSet ds_1 = new DataSet();
Adapter_1.Fill(ds_1,"安全评价项目库1");
DataView dv_1 = new DataView();
dv_1.Table= ds_1.Tables["安全评价项目库1"];
dv_1.RowFilter = "上级编号=" + tmpNd.ID + "";
Microsoft.Web.UI.WebControls.TreeNode tmpNd_1;
foreach (DataRowView drv_1 in dv_1)
{
tmpNd_1 = new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd_1.ID = drv_1["编号"].ToString().Trim();
tmpNd_1.Text=drv_1["序号"].ToString().Trim()+"-"+drv_1["评价项目"].ToString().Trim();
tmpNd.Nodes.Add(tmpNd_1);//添加一级节点
string SqlCmd_2 = "select * from 安全评价项目库2";
SqlDataAdapter Adapter_2 = new SqlDataAdapter(SqlCmd_2,myConnection);
DataSet ds_2 = new DataSet();
Adapter_2.Fill(ds_2,"安全评价项目库2");
DataView dv_2 = new DataView();
dv_2.Table = ds_2.Tables["安全评价项目库2"];
dv_2.RowFilter="上级编号=" + tmpNd_1.ID +"";
Microsoft.Web.UI.WebControls.TreeNode tmpNd_2;
foreach (DataRowView drv_2 in dv_2)
{
tmpNd_2 = new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd_2.ID = drv_2["编号"].ToString().Trim();
tmpNd_2.Text=drv_2["序号"].ToString().Trim()+"-"+drv_2["评价项目"].ToString().Trim();
tmpNd_1.Nodes.Add(tmpNd_2);//添加二级节点
string SqlCmd_3 = "select * from 安全评价项目库3";
SqlDataAdapter Adapter_3 = new SqlDataAdapter(SqlCmd_3,myConnection);
DataSet ds_3 = new DataSet();
Adapter_3.Fill(ds_3,"安全评价项目库2");
DataView dv_3 = new DataView();
dv_3.Table = ds_3.Tables["安全评价项目库2"];
dv_3.RowFilter="上级编号=" + tmpNd_2.ID +"";
Microsoft.Web.UI.WebControls.TreeNode tmpNd_3;
foreach (DataRowView drv_3 in dv_3)
{
tmpNd_3 = new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd_3.ID = drv_3["编号"].ToString().Trim();
tmpNd_3.Text=drv_3["序号"].ToString().Trim()+"-"+drv_3["评价项目"].ToString().Trim();
tmpNd_2.Nodes.Add(tmpNd_3);//添加三级节点
}
}
}
}
return true;
}
catch
{
return false;
}
}
我给你发一个,你给我邮件地址
具体方法是:创建一个数据库,设计树图信息表TREE_INFO,包含NODEID、PARENTID、NODENAME、ADDERSS、ICON字段,其它字段根据实际业务而定,节点名称NODENAME将在树型控件的节点上显示,NODEID字段保存节点的唯一标识号,PARENTID表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置TreeView控件。
Private Sub CreateDataSet()’建立数据集
Dim myConn As New SqlConnection()
Dim myCmd As New SqlCommand("select NODEID,NODENAME,PARENTID,ADDRESS,ICON from Tree_info", myConn)
Dim myDataAdapter As New SqlDataAdapter()
myConn.ConnectionString = Application("connectstring")
myCmd.CommandText = ""
myCmd.Connection = myConn
myDataAdapter.SelectCommand = myCmd
myDataAdapter.Fill(ds, "tree")
End Sub
建树的基本思路是:从根节点开始递归调用显示子树
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CreateDataSet()
intiTree(TreeView1.Nodes, 0)
End Sub
Private Sub intiTree(ByRef Nds As TreeNodeCollection, ByVal parentId As Integer)
Dim dv As New DataView()
Dim drv As DataRowView
Dim tmpNd As TreeNode
Dim intId As Integer
dv.Table = ds.Tables("tree")
dv.RowFilter = "PARENTID=’" & parentId & "’"
For Each drv In dv
tmpNd = New TreeNode()
intId = drv("NODE_ID")
tmpNd.ID = strId
tmpNd.Text = drv("NODE_NAME ")
tmpNd.ImageUrl = drv("ICON").ToString
Nds.Add(tmpNd)
intiTree(Nds(Nds.Count - 1).Nodes, intId)
Next
End Sub
http://msdn.microsoft.com/library/en-us/dnaspp/html/aspnet-usingtreeviewiewebcontrol.asp
http://www.aspalliance.com/shark/articles/TreeView/TreeViewDoc.aspx
http://expert.csdn.net/Expert/topic/2093/2093882.xml?temp=.9390528