using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Tree1 : System.Web.UI.Page
{

protected System.Data.SqlClient.SqlConnection SqlConnection1;
    protected System.Data.SqlClient.SqlDataAdapter SqlDataAdapter1;
    protected System.Data.DataSet DataSet1;
    protected System.Data.DataSet DataSet2;
    string Str_sql = "";
    static string Str_selected = "";  // 选中的值
   
   
    protected void Page_Load(object sender, EventArgs e)
    {
        AddTree(0, null);
    }

private void AddTree(int Pid, TreeNode PNode)
    {
        //string sqlStr = "SELECT Item_id,Item_name,Parent_ID FROM Para_item";
        //DataTable dt = YSqlHelper.ExecuteQuery(sqlStr, CommandType.Text);

if (!IsPostBack)
        {

P_ht.H_data P_data = new P_ht.H_data();
            P_data.sql_text1 = "SELECT Item_id,Item_name,Parent_ID FROM Para_item";
            Str_sql = P_data.sql_text1;
            P_data.select_tables();
            DataSet1 = P_data.DataSet8;
            DataTable dt = DataSet1.Tables[0];

if (dt.Rows.Count > 0)
            {
                DataView dv = new DataView(dt);
                //过滤ParentID,得到当前的所有子节点 ParentID为父节点ID
                dv.RowFilter = "[Parent_ID] = " + Pid;
                //循环递归
                foreach (DataRowView Row in dv)
                {
                    //声明节点
                    TreeNode Node = new TreeNode();
                    //绑定超级链接
                    // Node.NavigateUrl = String.Format("javascript:show('{0}')", Row["Item_Name"].ToString());
                    //开始递归
                    if (PNode == null)
                    {
                        //添加根节点
                        Node.Text = Row["Item_Name"].ToString();
                        this.TreeView1.Nodes.Add(Node);
                        Node.Expanded = true; //节点状态展开
                        AddTree(Int32.Parse(Row["Item_ID"].ToString()), Node);    //再次递归
                    }
                    else
                    {
                        //添加当前节点的子节点
                        Node.Text = Row["Item_Name"].ToString();
                        PNode.ChildNodes.Add(Node);
                        Node.Expanded = true; //节点状态展开
                        AddTree(Int32.Parse(Row["Item_ID"].ToString()), Node);     //再次递归
                    }
                }
            }
        }
    }

////
    // 选中节点
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        //this.Label1.Text = TreeView1.SelectedNode.Value.ToString().Trim();
        //this.Label1.Text = TreeView1.SelectedNode.Text.ToString().Trim();
        //Response.Write(TreeView1.SelectedNode.Value.ToString().Trim());
        Str_selected = TreeView1.SelectedNode.Value.ToString().Trim();
        Response.Write(Str_selected);
    }

// add
    protected void Btn_node_add_Click(object sender, EventArgs e)
    {
       
        P_ht.H_data P_data = new P_ht.H_data();
        if (Str_selected.Trim() == "")
        {
            ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
            scriptManager.RegisterStartupScript(typeof(string), "", "alert('提示: 选中的节点为空,您要重新点击节点才能选中节点! ');", true);
            return;
        }
        else
        {
            string str_Parent_ID = "0";
            Int32 i_Item_id = 0;

//select
            P_data.sql_text1 = " SELECT Item_id,Item_name,Parent_ID FROM Para_item where Item_name = '" + Str_selected.Trim().ToString() +"' ";
            Str_sql = P_data.sql_text1;
            P_data.select_tables();
            DataSet1 = P_data.DataSet8;
            if (DataSet1.Tables[0].Rows.Count > 0)
            {
                str_Parent_ID = DataSet1.Tables[0].Rows[0][0].ToString().Trim();

P_data.sql_text1 = " SELECT Item_id,Item_name,Parent_ID FROM Para_item order by Item_id desc ";
                Str_sql = P_data.sql_text1;
                P_data.select_tables();
                DataSet1 = P_data.DataSet8;

i_Item_id =  System.Convert.ToInt32(DataSet1.Tables[0].Rows[0][0].ToString().Trim())+1;
            }
            else
            {
                ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
                scriptManager.RegisterStartupScript(typeof(string), "", "alert('提示: 没有找到节点编号, 不能增加节点! ');", true);
                return;
            }

//add
            P_data.p11_count = "4";  //总数量+1

P_data.p11_ID = i_Item_id.ToString().Trim(); //编号
            P_data.p11_01 = "月当楼";
            P_data.p11_02 = str_Parent_ID;

P_data.p21_ID = "t3_01";
            P_data.p21_01 = "t3_02";
            P_data.p21_02 = "t3_03";

P_data.sql_text1 = "INSERT INTO Para_item (Item_id,Item_name,Parent_ID) VALUES "
                                               + "(@t3_01, @t3_02, @t3_03)";

P_data.write_tables();
        }

////reshfer;

//TreeNode nodeNew = new TreeNode("月当楼");// 新建节点对象

//if (TreeView1.SelectedNode == null)
        //{
        //    return;
        //}
        //else
        //{
        //    TreeView1.SelectedNode.ChildNodes.Add(nodeNew);
        //}

Server.Transfer("Tree1.aspx");

}

protected void Btn_node_edit_Click(object sender, EventArgs e)
    {
        P_ht.H_data P_data = new P_ht.H_data();
        if (Str_selected.Trim() == "")
        {
            ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
            scriptManager.RegisterStartupScript(typeof(string), "", "alert('提示: 选中的节点为空,您要重新点击节点才能选中节点! ');", true);
            return;
        }
        else
        {
           
            //select

string str_Parent_ID = "";

P_data.sql_text1 = " SELECT Item_id,Item_name,Parent_ID FROM Para_item where Item_name = '" + Str_selected.Trim().ToString() + "' ";
            Str_sql = P_data.sql_text1;
            P_data.select_tables();
            DataSet1 = P_data.DataSet8;
            if (DataSet1.Tables[0].Rows.Count > 0)
            {
                str_Parent_ID = DataSet1.Tables[0].Rows[0][0].ToString().Trim();
                Session["Tree1_Edit_name"] = str_Parent_ID;
            }
            else
            {
                ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
                scriptManager.RegisterStartupScript(typeof(string), "", "alert('提示: 没有找到节点编号, 不能删除节点! ');", true);
                return;
            }

//原窗口保留,以对话框形式打开新窗口:
            //Response.Write("<script>window.showModelessDialog('Tree1_edit.aspx')</script>");
            //return;
           
            P_data.sql_text1 = "update Para_item set Item_name = '户部巷' "
                                                  + " where Item_id =  " + str_Parent_ID.Trim().ToString() + " ";

P_data.update_tables();
        }

////reshfer;

//if (TreeView1.SelectedNode == null)
        //{
        //    return;
        //}
        //else
        //{
        //    TreeView1.SelectedNode.Value = "户部巷";
        //    TreeView1.SelectedNode.Text = "户部巷";
        //}

Server.Transfer("Tree1.aspx");
    }

// delete
    protected void Btn_node_delete_Click(object sender, EventArgs e)
    {
        P_ht.H_data P_data = new P_ht.H_data();
        if (Str_selected.Trim() == "")
        {
            ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
            scriptManager.RegisterStartupScript(typeof(string), "", "alert('提示: 选中的节点为空,您要重新点击节点才能选中节点! ');", true);
            return;
        }
        else
        {
            //select

string str_num_ID = "";
            string str_Parent_ID = "";

P_data.sql_text1 = " SELECT Item_id,Item_name,Parent_ID FROM Para_item where Item_name = '" + Str_selected.Trim().ToString() + "' ";
            Str_sql = P_data.sql_text1;
            P_data.select_tables();
            DataSet1 = P_data.DataSet8;
            if (DataSet1.Tables[0].Rows.Count > 0)
            {
                str_num_ID = DataSet1.Tables[0].Rows[0][0].ToString().Trim();
                str_Parent_ID = DataSet1.Tables[0].Rows[0][2].ToString().Trim();
            }
            else
            {
                ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
                scriptManager.RegisterStartupScript(typeof(string), "", "alert('提示: 没有找到节点编号, 不能删除节点! ');", true);
                return;
            }

// 如果有子节点提示先删除子节点,否则不予删除。( 另一种方法是写代码,用递归的方法找到所有的子节点,批量性删除 )
            P_data.sql_text1 = " SELECT Item_id,Item_name,Parent_ID FROM Para_item where Parent_ID = '" + str_num_ID.Trim().ToString() + "' ";
            Str_sql = P_data.sql_text1;
            P_data.select_tables();
            DataSet1 = P_data.DataSet8;
            if (DataSet1.Tables[0].Rows.Count > 0)
            {
                ClientScriptManager scriptManager = ((Page)System.Web.HttpContext.Current.Handler).ClientScript;
                scriptManager.RegisterStartupScript(typeof(string), "", "alert('提示: 不能删除, 先删除所有子节点后才都能删除父节点! ');", true);
                return;
            }
            else
            {
                P_data.sql_text1 = " delete from Para_item where Item_id = " + str_num_ID.Trim().ToString() + " ";
                P_data.update_tables();
            }
        }

//reshfer;
        Server.Transfer("Tree1.aspx");

}

}

******************************************************

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Tree1.aspx.cs" Inherits="Tree1" %>

<!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>TreeView1 数据库测试</title>
    <script type="text/javascript">
        function show(msg) {
            alert(msg);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
         <br />
        <br />
   
        <asp:Panel ID="Panel1" runat="server" BackColor="#FDF8CA" BorderStyle="None"
            Height="370px">
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <asp:Button ID="Btn_node_add" runat="server" onclick="Btn_node_add_Click"
                Text="Add" Width="76px" />
            &nbsp;
            <asp:Button ID="Btn_node_edit" runat="server" onclick="Btn_node_edit_Click"
                Text="Edit" Width="76px" />
            &nbsp;
            <asp:Button ID="Btn_node_delete" runat="server" onclick="Btn_node_delete_Click"
                Text="Delete" Width="76px" />
            <br />
            <br />
                    <asp:TreeView ID="TreeView1" runat="server"
                onselectednodechanged="TreeView1_SelectedNodeChanged">
                    </asp:TreeView>
            <br />
            <br />
        </asp:Panel>
       
        <br />
        <br />
   
    </div>
    </form>
</body>
</html>

*************************************************************

CREATE TABLE [dbo].[Para_item](
 [Item_id] [int] NULL,
 [Item_name] [nvarchar](50) NULL,
 [Parent_ID] [nvarchar](50) NULL
) ON [PRIMARY]

*************************************************************

TreeView 节点的显示,读取,操作的更多相关文章

  1. 动态载入TreeView时让TreeView节点前显示加号

    解释下标题,我这里通过webservice获取数据并动态载入TreeView节点.那么某个节点展开前它是没有子节点的.那么它就不显示加号.这样会让用户误以为此节点不能展开.我是这样做的,每次创建节点a ...

  2. TreeView节点拖拉操作1

      TreeView节点拖拉操作1 //事先设置 TreeView1.DragMode= dmAutomatic;   unit Unit1; interface uses   Windows, Me ...

  3. WINFORM中treeview 节点显示不全

    在设置treeview节点时,出现如下显示不全的问题: 这个问题是由于我们在treeview任务中编辑节点时设置的字体大于我们在treeview属性中设置frot字体导致的. 所以只要将treevie ...

  4. DSAPI TreeView节点增删简化操作

    将一行或多行字符串添加到TreeView控件. 函数: 控件.TreeView控件.添加路径节点到TreeView(要添加节点的TreeView控件,字符串或字符串数组) 示例:将一个多行文本添加到T ...

  5. TreeView节点

    TreeView由节点构成,建树通过对TreeView.items属性进行操作.Items是一个TTreeNodes对象,这是一个TTreeNode集. 一.针对TTreeNodes,也就是 Tree ...

  6. SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题

    转:http://blog.csdn.net/miragesky2049/article/details/7204882 SharePoint2010沙盒解决方案基础开发--关于TreeView树形控 ...

  7. 20151124002 treeView 数型菜单的操作

    20151124002 treeView 数型菜单的操作 protected void FillTree()        {            SqlConnection1 = new Syst ...

  8. Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置

    QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有m ...

  9. WPF:使用Json.NET在TreeView中树形显示JSON数据

    原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...

随机推荐

  1. ios app 解决微信扫二维码不能跳转问题

    <script> (function(){ // Setup GA (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i ...

  2. keil 编译的一些错误

    以前使用的是MDK4.5 但是没有stm32F3的元器件,果断的使用了4.6版本了.但是编译之后出现这样错误:linking....\Obj\prj.axf: Warning: L6373W: lib ...

  3. G面经Prepare: Search word delete sequence in dictionary

    给一个单词一个字典,每次删除单词里任一个字母直到剩下一个字母,形成一个序列,比如office->offce->ofce->ofc->oc->c.问是否字典里存在一个这种序 ...

  4. navicat的简单应用

    首先  创建连接 主机名 : 可以不写名称随意 主机名/IP地址:localhost或者127.0.0.1 都是本机的意思 端口:默认3306   尽量不要改怕与其余端口重复,如有重名端口系统会报错 ...

  5. android测试(转)

    1.冒烟测试 跟web端的测试流程一样,你拿到一个你们开发做出来的apk首先得去冒烟,也就是保证他的稳定性,指定时间内不会崩溃.这款原生sdk自带的monkey可以当做我们的测试工具.就跟我之前博客所 ...

  6. jsp编写页面时常见错误提示

    jsp编写页面时常见错误提示 404-->未部署web应用 500-->代码有问题 无法显示网页-->未启动tomcat webRoot-->URL输入有误 web-inf-- ...

  7. 如何查看和停止Linux启动的服务

    1. 查看Linux启动的服务chkconfig --list 查询出所有当前运行的服务chkconfig --list atd  查询atd服务的当前状态 2.停止所有服务并且在下次系统启动时不再启 ...

  8. java总结第三次//类和对象2、3

    四.类和对象2 主要内容:Java类的继承.方法的重写.覆盖.访问控制.super 关键字.多态性及其应用 1.继承 要求:Java只支持单继承,不允许多重继承 一个子类只能有一个父类 一个父类可以派 ...

  9. 电影TS、TC、SCR、R5、BD、HD等版本是什么意思

    在很多电影下载网站的影片标题中我们都能看到,比如<刺杀希特勒BD版>.<游龙戏凤TS版>等,这些英文缩写都是什么意思呢?都代表什么画质?以下就是各个版本的具体含义: 1.CAM ...

  10. Java程序编译和运行的过程【转】

    转自:http://www.360doc.com/content/14/0218/23/9440338_353675002.shtml Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来 ...