惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
月光博客
月光博客
雷峰网
雷峰网
WordPress大学
WordPress大学
博客园 - 司徒正美
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
H
Help Net Security
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security @ Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
爱范儿
爱范儿
W
WeLiveSecurity
J
Java Code Geeks
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
T
Threatpost
The Cloudflare Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
N
Netflix TechBlog - Medium
Latest news
Latest news
V2EX - 技术
V2EX - 技术
小众软件
小众软件
T
The Blog of Author Tim Ferriss
A
Arctic Wolf
B
Blog RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
C
Check Point Blog
N
News | PayPal Newsroom
Cyberwarzone
Cyberwarzone
V
V2EX
TaoSecurity Blog
TaoSecurity Blog
P
Privacy & Cybersecurity Law Blog
Microsoft Security Blog
Microsoft Security Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
D
DataBreaches.Net
F
Fortinet All Blogs
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
K
Kaspersky official blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com

博客园 - 早班火车

很还念这里。。。说些什么呢。。。 程序,好亲切~ IE与DOM下访问内联样式和外部样式表的常用方法总结 关于javascript中的事件学习及总结 总结了几个常用的sql server系统表的使用 在做一个小网站的一些心得与遇到的问题总结,为以后方便查阅。 用sql脚本一条条导数据的两种方法,需返回唯一标识@@IDENTITY作为插入到第二个表用。 一步一步教你抓数据——用.net精确提取网站数据的通用方法 也来为自己的博客加个花,兼AJAX跨域的一点疑问。 关于IE缓存和AJAX的一点思考和疑问 退一步海阔天空:抛开思维定势 DOCTYPE:你可能不知道的 我的2007--从2008做起,加油! javascript常用验证 正则表达式参考手册__Mini版 一段好用的ajax和div漂浮显示效果实现 ajax小贴士 好用的缓存类 javascript操纵剪贴板
树的操作(绑定数据库,添加新节点,删除节点)(转载加实现)
早班火车 · 2007-11-29 · via 博客园 - 早班火车

前台:

<%@ 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:
&nbsp; <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;
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();
        }
    }
}

图: