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);
}
}
}
}
按钮删除功能:
protected
void
imgBtn_DelFavorite_Click(
object
sender, ImageClickEventArgs e)
{
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();
}
{
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 >
<! 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 >
后台:
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.SqlClient;
public partial class AutoTree_AutoTree : System.Web.UI.Page
{
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();
}
}
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.SqlClient;
public partial class AutoTree_AutoTree : System.Web.UI.Page
{
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