数据库的字段
taskkindid , taskid ,fatherid, taskname...
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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.Common;
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Text;


public partial class TaskAdministration_TimeSelect : System.Web.UI.Page

...{
DataTable dt = new DataTable();
Database db = DatabaseFactory.CreateDatabase();
protected void Page_Load(object sender, EventArgs e)

...{
bindtree(UltTree);
}
protected void bindtree(Infragistics.WebUI.UltraWebNavigator.UltraWebTree treeview)

...{

treeview.Nodes.Clear();

/**/////創建四个根節點,葉面會產生四個根,只要一個根,則定義一個節點
Infragistics.WebUI.UltraWebNavigator.Node rootnode1 = new Infragistics.WebUI.UltraWebNavigator.Node();
Infragistics.WebUI.UltraWebNavigator.Node rootnode2 = new Infragistics.WebUI.UltraWebNavigator.Node();
Infragistics.WebUI.UltraWebNavigator.Node rootnode3 = new Infragistics.WebUI.UltraWebNavigator.Node();
Infragistics.WebUI.UltraWebNavigator.Node rootnode4 = new Infragistics.WebUI.UltraWebNavigator.Node();

//添加固定根節點,若沒有固定的標題,則可以不添加
rootnode1.Text = "專案事項";
rootnode1.Tag = "1";
rootnode2.Text = "會議事項";
rootnode2.Tag = "2";
rootnode3.Text = "例行事項";
rootnode3.Tag = "3";
rootnode4.Text = "一般事項";
rootnode4.Tag = "4";
treeview.Nodes.Add(rootnode1);
treeview.Nodes.Add(rootnode2);
treeview.Nodes.Add(rootnode3);
treeview.Nodes.Add(rootnode4);
//獲取形成樹的數據
dt = getTrees("1");
//調用遞歸添加樹結點
CreateChildNode(rootnode1, "0",dt);
dt = getTrees("2");
CreateChildNode(rootnode2, "0", dt);
dt = getTrees("3");
CreateChildNode(rootnode3, "0", dt);
dt = getTrees("4");
CreateChildNode(rootnode4, "0", dt);
}

/**//// <summary>
/// 遞歸方法添加節點
/// </summary>
/// <param name="parentnode"></param>
/// <param name="taskid"></param>
/// <param name="dt"></param>
public void CreateChildNode(Infragistics.WebUI.UltraWebNavigator.Node parentnode,string taskid,DataTable dt)

...{
DataRow[] rows = dt.Select("Fatherid='"+taskid+"'");
foreach (DataRow dr in rows)

...{
Infragistics.WebUI.UltraWebNavigator.Node nd = new Infragistics.WebUI.UltraWebNavigator.Node();
nd.Tag = dr["taskid"].ToString();
nd.Text = dr["taskname"].ToString();
parentnode.Nodes.Add(nd);
//遞歸調用獲取所有數據
CreateChildNode(nd,dr["taskid"].ToString(),dt);
}
}

/**//// <summary>
/// 獲取數據
/// </summary>
/// <param name="taskkindid"></param>
/// <returns></returns>
public DataTable getTrees(string taskkindid)

...{
StringBuilder cmdText = new StringBuilder();
cmdText.Append("Select * From Task Where TaskKindID='"+taskkindid+"'");
DbCommand cmd = db.GetSqlStringCommand(cmdText.ToString());
dt = db.ExecuteDataSet(cmd).Tables[0];
int i = dt.Rows.Count;
return dt;
}
}
