public void BindFavoriteTree()
{
this.treeV_Favorite.Nodes.Clear();
TreeNode node = new TreeNode(); //这里是创建一个根节点,就是dome中看到的Root
node.Text = "HelpFavorite";
node.Value = "1";
CreateChildTree(node, 1);
treeV_Favorite.Nodes.Add(node);
node.SelectAction = TreeNodeSelectAction.Expand;
TreeNode node1 = new TreeNode();
node1.Text = "HelpSearch";
node1.Value = "2";
CreateChildTree(node1, 2);
treeV_Favorite.Nodes.Add(node1);
node1.SelectAction = TreeNodeSelectAction.Expand;
}
protected void CreateChildTree(TreeNode _parentNode, int _parentID)
{
using (SqlConnection _conn = new SqlConnection(constring))
{
SqlCommand _comm = new SqlCommand();
string sql = "SELECT IDFavorite, Title, Status, IDHelpFile FROM V_Favorite where status=@rootid";
_comm.Parameters.Add("@rootid", SqlDbType.Int).Value = _parentID;
_comm.CommandText = sql;
_comm.Connection = _conn;
_conn.Open();
using (SqlDataReader r = _comm.ExecuteReader())
{
while (r.Read())
{
TreeNode _node = new TreeNode();
_node.Text = r["Title"].ToString();
_node.Value = r["IDHelpFile"].ToString();
_node.ShowCheckBox = true;
//CreateChildTree(_node, (int)r["ID"]); //递归出子节点
_parentNode.ChildNodes.Add(_node);
}
}
}
}
{
this.treeV_Favorite.Nodes.Clear();
TreeNode node = new TreeNode(); //这里是创建一个根节点,就是dome中看到的Root
node.Text = "HelpFavorite";
node.Value = "1";
CreateChildTree(node, 1);
treeV_Favorite.Nodes.Add(node);
node.SelectAction = TreeNodeSelectAction.Expand;
TreeNode node1 = new TreeNode();
node1.Text = "HelpSearch";
node1.Value = "2";
CreateChildTree(node1, 2);
treeV_Favorite.Nodes.Add(node1);
node1.SelectAction = TreeNodeSelectAction.Expand;
}
protected void CreateChildTree(TreeNode _parentNode, int _parentID)
{
using (SqlConnection _conn = new SqlConnection(constring))
{
SqlCommand _comm = new SqlCommand();
string sql = "SELECT IDFavorite, Title, Status, IDHelpFile FROM V_Favorite where status=@rootid";
_comm.Parameters.Add("@rootid", SqlDbType.Int).Value = _parentID;
_comm.CommandText = sql;
_comm.Connection = _conn;
_conn.Open();
using (SqlDataReader r = _comm.ExecuteReader())
{
while (r.Read())
{
TreeNode _node = new TreeNode();
_node.Text = r["Title"].ToString();
_node.Value = r["IDHelpFile"].ToString();
_node.ShowCheckBox = true;
//CreateChildTree(_node, (int)r["ID"]); //递归出子节点
_parentNode.ChildNodes.Add(_node);
}
}
}
}
按钮删除功能:

{
foreach ( TreeNode node in treeV_Favorite.CheckedNodes)
{
string SelectTreeID = node.Value;
string strDelete = "delete from CD_HC_Favorite where IDUser='" + UserProfile.UserInfo.UserID.ToString() + "' and IDHelpFile='" + SelectTreeID + "' and status = '"+node.Parent.Value+"'";
PubLibrary.cmdExecute(strDelete);
}
BindFavoriteTree();
}
==============================================================================
下面介绍第二中方法前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AutoTree.aspx.cs" Inherits="AutoTree_AutoTree" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>AutoTree</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="AutoTree" runat="server" ShowLines="True">
</asp:TreeView>
<asp:DropDownList ID="ddlTreeNode" runat="server" DataSourceID="SqlDataSource1"
DataTextField="TreeName" DataValueField="TreeValue">
</asp:DropDownList>
<asp:TextBox ID="txtNode" runat="server"></asp:TextBox>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [TreeValue], [TreeName] FROM [AutoTree]"></asp:SqlDataSource>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" Width="60px" />
</div>
</form>

</body>
</html>



























后台:













{
protected string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
InitTree();
}
}
// 递归绑定同一个表数据
private void InitTree()
{
DataTable dt = GetTreeViewTable();
DataView dv = new DataView(dt);
dv.RowFilter = "TreeParentID='0'";
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv["TreeName"].ToString();
node.Value = drv["TreeValue"].ToString();
//node.ImageUrl = drv["TreeIco"].ToString();
node.Expanded = true;
AutoTree.Nodes.Add(node);
AddReplies(dt, node);
}
}
private DataTable GetTreeViewTable()
{
SqlConnection con = new SqlConnection(constring);
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM AutoTree", con);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
private void AddReplies(DataTable dt, TreeNode node)
{
DataView dv = new DataView(dt);
dv.RowFilter = "TreeParentID='" + node.Value + "'";
foreach (DataRowView row in dv)
{
TreeNode replyNode = new TreeNode();
replyNode.Text = row["TreeName"].ToString();
replyNode.Value = row["TreeValue"].ToString();
//replyNode.ImageUrl = row["TreeIco"].ToString();
//replyNode.NavigateUrl = row["TreeLink"].ToString().Trim();
//replyNode.Target = row["TargetStr"].ToString().Trim();
replyNode.Expanded = false;
node.ChildNodes.Add(replyNode);
AddReplies(dt, replyNode);
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
//string rootID = this.AutoTree.SelectedValue;
string rootID = ddlTreeNode.SelectedValue.ToString();
string txtNode = this.txtNode.Text;
using (SqlConnection Conn = new SqlConnection(constring))
{
SqlCommand cmd = new SqlCommand("insert into AutoTree (TreeName,TreeParentID,TreeValue) values (@TreeName,@TreeParentID,@TreeName)", Conn);
cmd.Parameters.Add("@TreeName", SqlDbType.NVarChar, 50).Value = txtNode;
cmd.Parameters.Add("@TreeParentID", SqlDbType.NVarChar, 50).Value = rootID;
Conn.Open();
cmd.ExecuteNonQuery();
ddlTreeNode.ClearSelection();
ddlTreeNode.DataSourceID = SqlDataSource1.ID;
this.txtNode.Text = "";
}
this.AutoTree.Nodes.Clear();
InitTree();
}
}

数据库:ID,TreeParentID,TreeValue,TreeName.
第一条数据的 TreeParentID=0,TreeValue=1