<%
@ Master Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
MasterPage.master.cs
"
Inherits
=
"
Master_MasterPage
"
%>
<! 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 ></ title >
< link href ="../App_Themes/myTheme/Basic.css" rel ="stylesheet" type ="text/css" />
</ head >
< body style ="margin:0" >
< form id ="form1" runat ="server" >
< div >
< table style ="width:100%;height:100%;border-collapse:collapse;border-color:#44a938" border ="1" "" >
< tr >< td style ="height:50px; font-size:15px" colspan ="2" align ="center" > God is a girl! </ td ></ tr >
< tr >
< td style ="width: 160px" valign ="top" >
< asp:TreeView ID ="TreeLeft" runat ="server" ShowLines ="True" OnSelectedNodeChanged ="TreeLeft_SelectedNodeChanged" >
</ asp:TreeView >
Parent: < asp:DropDownList ID ="ddlParentID" runat ="server" Width ="90px" ></ asp:DropDownList >< br />
Text: < asp:TextBox ID ="txtNodeName" runat ="server" Width ="85px" ></ asp:TextBox >< br />
< asp:Button ID ="btnSubmit" runat ="server" Text ="Submit" OnClick ="btnSubmit_Click" />
< asp:Button ID ="btnDelete" runat ="server" Text ="Delete" OnClick ="btnDelete_Click" />
</ td >
< td valign ="top" >
< asp:ContentPlaceHolder ID ="ContentPlaceHolder1" runat ="server" >
</ asp:ContentPlaceHolder >
</ td >
</ tr >
</ table >
</ 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 ></ title >
< link href ="../App_Themes/myTheme/Basic.css" rel ="stylesheet" type ="text/css" />
</ head >
< body style ="margin:0" >
< form id ="form1" runat ="server" >
< div >
< table style ="width:100%;height:100%;border-collapse:collapse;border-color:#44a938" border ="1" "" >
< tr >< td style ="height:50px; font-size:15px" colspan ="2" align ="center" > God is a girl! </ td ></ tr >
< tr >
< td style ="width: 160px" valign ="top" >
< asp:TreeView ID ="TreeLeft" runat ="server" ShowLines ="True" OnSelectedNodeChanged ="TreeLeft_SelectedNodeChanged" >
</ asp:TreeView >
Parent: < asp:DropDownList ID ="ddlParentID" runat ="server" Width ="90px" ></ asp:DropDownList >< br />
Text: < asp:TextBox ID ="txtNodeName" runat ="server" Width ="85px" ></ asp:TextBox >< br />
< asp:Button ID ="btnSubmit" runat ="server" Text ="Submit" OnClick ="btnSubmit_Click" />
< asp:Button ID ="btnDelete" runat ="server" Text ="Delete" OnClick ="btnDelete_Click" />
</ td >
< td valign ="top" >
< asp:ContentPlaceHolder ID ="ContentPlaceHolder1" runat ="server" >
</ asp:ContentPlaceHolder >
</ td >
</ tr >
</ table >
</ 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 Master_MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load( object sender, EventArgs e)
{
if ( ! IsPostBack)
{
TreeleftBind();
bindGroup();
}
}
#region 绑定树
private void TreeleftBind()
{
this .TreeLeft.Nodes.Clear();
DataTable dt = master.Getdt();
DataView dv = new DataView(dt);
dv.RowFilter = " TreeParentID = 0 " ;
TreeNode node = new TreeNode();
foreach (DataRowView drv in dv)
{
node.Text = drv[ " TreeName " ].ToString();
node.Value = drv[ " ID " ].ToString();
node.Expanded = true ;
this .TreeLeft.Nodes.Add(node);
AddReplies(dt, node);
}
}
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[ " ID " ].ToString();
replyNode.NavigateUrl = row[ " Link " ].ToString();
replyNode.Expanded = false ;
node.ChildNodes.Add(replyNode);
replyNode.ShowCheckBox = true ;
AddReplies(dt, replyNode);
}
}
#endregion
#region 绑定DropDownList
private void bindGroup()
{
this .ddlParentID.Items.Clear();
DataTable dt = master.Getdt(); // 获取所有节点
if (dt.Rows.Count > 0 )
{
foreach (DataRow row in dt.Rows)
{
if (row[ " TreeParentID " ].ToString().Trim() == " 0 " ) // 绑定根节点
{
this .ddlParentID.Items.Add( new ListItem(row[ " TreeName " ].ToString(), row[ " Id " ].ToString()));
this .bindDropChildItem( this .ddlParentID, dt, row[ " ID " ].ToString(), 1 );
}
}
}
}
private void bindDropChildItem(DropDownList d, DataTable dt, string id, int length)
{
DataRow[] rows = dt.Select( " TreeParentID=' " + id + " ' " , " Id ASC " ); // 取出id子节点进行绑定
for ( int i = 0 ; i < rows.Length; i ++ )
{
this .ddlParentID.Items.Add( new ListItem( this .SpaceLength(length) + rows[i][ " TreeName " ].ToString(), rows[i][ " Id " ].ToString()));
this .bindDropChildItem(d, dt, rows[i][ " Id " ].ToString(), length + 1 ); // 空白数目加1
}
}
private string SpaceLength( int i)
{
string space = "" ;
for ( int j = 0 ; j < i; j ++ )
{
space += " -- " ;
}
return space;
}
#endregion
#region 动态增加节点
protected void btnSubmit_Click( object sender, EventArgs e)
{
string rootID = ddlParentID.SelectedValue.ToString();
string txtName = this .txtNodeName.Text;
master.InsertNode( " AutoTree " , " TreeName " , " TreeParentID " ,txtName,rootID);
this .txtNodeName.Text = "" ;
TreeleftBind();
bindGroup();
}
#endregion
#region 动态删除节点
protected void btnDelete_Click( object sender, EventArgs e)
{
if (TreeChecked() != 0 )
{
string strjavascript = " <script language='javascript'>alert('You cant delete the node which have childnode!')</script> " ;
Page.ClientScript.RegisterStartupScript( this .GetType(), " onclick " , strjavascript);
}
else
{
foreach (TreeNode node in TreeLeft.CheckedNodes)
{
string SelectTreeID = node.Value;
master.DeleteRecords(SelectTreeID);
}
TreeleftBind();
bindGroup();
}
}
protected int TreeChecked()
{
int count = 0 ;
foreach (TreeNode node in this .TreeLeft.CheckedNodes)
{
if (node.ChildNodes.Count > 0 )
{
count = count + 1 ;
}
}
return count;
}
#endregion
#region 页面跳转
protected void TreeLeft_SelectedNodeChanged( object sender, EventArgs e)
{
TreeNode node = TreeLeft.SelectedNode;
if (node.ChildNodes.Count != 0 )
{
node.SelectAction = TreeNodeSelectAction.Expand;
node.Expanded = true ;
}
else
{
string url = " @ " + node.NavigateUrl;
Response.Redirect(url); // 数据库中LINK字段的数据为:~/WOW/Moniqi.aspx
// Response.Redirect(@"~/Yule/wowmoni.aspx");
}
}
#endregion
}
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 Master_MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load( object sender, EventArgs e)
{
if ( ! IsPostBack)
{
TreeleftBind();
bindGroup();
}
}
#region 绑定树
private void TreeleftBind()
{
this .TreeLeft.Nodes.Clear();
DataTable dt = master.Getdt();
DataView dv = new DataView(dt);
dv.RowFilter = " TreeParentID = 0 " ;
TreeNode node = new TreeNode();
foreach (DataRowView drv in dv)
{
node.Text = drv[ " TreeName " ].ToString();
node.Value = drv[ " ID " ].ToString();
node.Expanded = true ;
this .TreeLeft.Nodes.Add(node);
AddReplies(dt, node);
}
}
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[ " ID " ].ToString();
replyNode.NavigateUrl = row[ " Link " ].ToString();
replyNode.Expanded = false ;
node.ChildNodes.Add(replyNode);
replyNode.ShowCheckBox = true ;
AddReplies(dt, replyNode);
}
}
#endregion
#region 绑定DropDownList
private void bindGroup()
{
this .ddlParentID.Items.Clear();
DataTable dt = master.Getdt(); // 获取所有节点
if (dt.Rows.Count > 0 )
{
foreach (DataRow row in dt.Rows)
{
if (row[ " TreeParentID " ].ToString().Trim() == " 0 " ) // 绑定根节点
{
this .ddlParentID.Items.Add( new ListItem(row[ " TreeName " ].ToString(), row[ " Id " ].ToString()));
this .bindDropChildItem( this .ddlParentID, dt, row[ " ID " ].ToString(), 1 );
}
}
}
}
private void bindDropChildItem(DropDownList d, DataTable dt, string id, int length)
{
DataRow[] rows = dt.Select( " TreeParentID=' " + id + " ' " , " Id ASC " ); // 取出id子节点进行绑定
for ( int i = 0 ; i < rows.Length; i ++ )
{
this .ddlParentID.Items.Add( new ListItem( this .SpaceLength(length) + rows[i][ " TreeName " ].ToString(), rows[i][ " Id " ].ToString()));
this .bindDropChildItem(d, dt, rows[i][ " Id " ].ToString(), length + 1 ); // 空白数目加1
}
}
private string SpaceLength( int i)
{
string space = "" ;
for ( int j = 0 ; j < i; j ++ )
{
space += " -- " ;
}
return space;
}
#endregion
#region 动态增加节点
protected void btnSubmit_Click( object sender, EventArgs e)
{
string rootID = ddlParentID.SelectedValue.ToString();
string txtName = this .txtNodeName.Text;
master.InsertNode( " AutoTree " , " TreeName " , " TreeParentID " ,txtName,rootID);
this .txtNodeName.Text = "" ;
TreeleftBind();
bindGroup();
}
#endregion
#region 动态删除节点
protected void btnDelete_Click( object sender, EventArgs e)
{
if (TreeChecked() != 0 )
{
string strjavascript = " <script language='javascript'>alert('You cant delete the node which have childnode!')</script> " ;
Page.ClientScript.RegisterStartupScript( this .GetType(), " onclick " , strjavascript);
}
else
{
foreach (TreeNode node in TreeLeft.CheckedNodes)
{
string SelectTreeID = node.Value;
master.DeleteRecords(SelectTreeID);
}
TreeleftBind();
bindGroup();
}
}
protected int TreeChecked()
{
int count = 0 ;
foreach (TreeNode node in this .TreeLeft.CheckedNodes)
{
if (node.ChildNodes.Count > 0 )
{
count = count + 1 ;
}
}
return count;
}
#endregion
#region 页面跳转
protected void TreeLeft_SelectedNodeChanged( object sender, EventArgs e)
{
TreeNode node = TreeLeft.SelectedNode;
if (node.ChildNodes.Count != 0 )
{
node.SelectAction = TreeNodeSelectAction.Expand;
node.Expanded = true ;
}
else
{
string url = " @ " + node.NavigateUrl;
Response.Redirect(url); // 数据库中LINK字段的数据为:~/WOW/Moniqi.aspx
// Response.Redirect(@"~/Yule/wowmoni.aspx");
}
}
#endregion
}
类:
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;
/// <summary>
/// Summary description for master
/// </summary>
public class master
{
public master()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
/// 删除节点
/// </summary>
/// <param name="datakey"></param>
public static void DeleteRecords( string datakey)
{
string strDelete = String.Format( " DELETE FROM [AutoTree] where ID = {0} " , datakey);
GetDB.cmdExecute(strDelete);
}
/// <summary>
/// 返回DataTable
/// </summary>
/// <returns></returns>
public static DataTable Getdt()
{
SqlConnection cn = GetDB.GetConnect();
string strSQL = " select * from AutoTree " ;
SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
/// <summary>
/// 为Tree添加新节点
/// </summary>
/// <param name="tblName"></param>
/// <param name="_TreeName"></param>
/// <param name="_TreeParentID"></param>
/// <param name="txtName"></param>
/// <param name="rootID"></param>
public static void InsertNode( string tblName, string _TreeName, string _TreeParentID, string txtName, string rootID)
{
using (SqlConnection Conn = GetDB.GetConnect())
{
SqlCommand cmd = new SqlCommand(String.Format( " insert into {0} ({1},{2}) values (@TreeName,@TreeParentID) " ,tblName,_TreeName,_TreeParentID), Conn);
cmd.Parameters.Add( " @TreeName " , SqlDbType.NVarChar, 50 ).Value = txtName;
cmd.Parameters.Add( " @TreeParentID " , SqlDbType.NVarChar, 50 ).Value = rootID;
Conn.Open();
cmd.ExecuteNonQuery();
Conn.Close();
}
}
}
图:
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;
/// <summary>
/// Summary description for master
/// </summary>
public class master
{
public master()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
/// 删除节点
/// </summary>
/// <param name="datakey"></param>
public static void DeleteRecords( string datakey)
{
string strDelete = String.Format( " DELETE FROM [AutoTree] where ID = {0} " , datakey);
GetDB.cmdExecute(strDelete);
}
/// <summary>
/// 返回DataTable
/// </summary>
/// <returns></returns>
public static DataTable Getdt()
{
SqlConnection cn = GetDB.GetConnect();
string strSQL = " select * from AutoTree " ;
SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
/// <summary>
/// 为Tree添加新节点
/// </summary>
/// <param name="tblName"></param>
/// <param name="_TreeName"></param>
/// <param name="_TreeParentID"></param>
/// <param name="txtName"></param>
/// <param name="rootID"></param>
public static void InsertNode( string tblName, string _TreeName, string _TreeParentID, string txtName, string rootID)
{
using (SqlConnection Conn = GetDB.GetConnect())
{
SqlCommand cmd = new SqlCommand(String.Format( " insert into {0} ({1},{2}) values (@TreeName,@TreeParentID) " ,tblName,_TreeName,_TreeParentID), Conn);
cmd.Parameters.Add( " @TreeName " , SqlDbType.NVarChar, 50 ).Value = txtName;
cmd.Parameters.Add( " @TreeParentID " , SqlDbType.NVarChar, 50 ).Value = rootID;
Conn.Open();
cmd.ExecuteNonQuery();
Conn.Close();
}
}
}