TreeView 节点的显示,读取,操作
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">
<br />
<br />
<asp:Button ID="Btn_node_add" runat="server" onclick="Btn_node_add_Click"
Text="Add" Width="76px" />
<asp:Button ID="Btn_node_edit" runat="server" onclick="Btn_node_edit_Click"
Text="Edit" Width="76px" />
<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 节点的显示,读取,操作的更多相关文章
- 动态载入TreeView时让TreeView节点前显示加号
解释下标题,我这里通过webservice获取数据并动态载入TreeView节点.那么某个节点展开前它是没有子节点的.那么它就不显示加号.这样会让用户误以为此节点不能展开.我是这样做的,每次创建节点a ...
- TreeView节点拖拉操作1
TreeView节点拖拉操作1 //事先设置 TreeView1.DragMode= dmAutomatic; unit Unit1; interface uses Windows, Me ...
- WINFORM中treeview 节点显示不全
在设置treeview节点时,出现如下显示不全的问题: 这个问题是由于我们在treeview任务中编辑节点时设置的字体大于我们在treeview属性中设置frot字体导致的. 所以只要将treevie ...
- DSAPI TreeView节点增删简化操作
将一行或多行字符串添加到TreeView控件. 函数: 控件.TreeView控件.添加路径节点到TreeView(要添加节点的TreeView控件,字符串或字符串数组) 示例:将一个多行文本添加到T ...
- TreeView节点
TreeView由节点构成,建树通过对TreeView.items属性进行操作.Items是一个TTreeNodes对象,这是一个TTreeNode集. 一.针对TTreeNodes,也就是 Tree ...
- SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题
转:http://blog.csdn.net/miragesky2049/article/details/7204882 SharePoint2010沙盒解决方案基础开发--关于TreeView树形控 ...
- 20151124002 treeView 数型菜单的操作
20151124002 treeView 数型菜单的操作 protected void FillTree() { SqlConnection1 = new Syst ...
- Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置
QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有m ...
- WPF:使用Json.NET在TreeView中树形显示JSON数据
原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...
随机推荐
- Excel将秒转换成标准的时间格式HH:MM:SS
Excel将秒转换成标准的时间格式HH:MM:SS 比如120秒,转换成00:02:00 Excel公式为: =TEXT(A1/86400,"[hh]:mm:ss") A1为秒数据 ...
- 实现 DIV 固定定位在网页主体部分最右侧
position:fixed 相对于窗口的固定定位,这个窗口可理解为可视窗口,除了浏览器自己的东西,剩下的就是这个可视窗口.而大部分的网页都是窄屏设计,比如说网页主体部分固定宽 1200px,或者自适 ...
- 5.POST中文乱码解决方案
Spring Web MVC提供了Filter用于解决POST方式造成的中文乱码问题,具体配置如下: <filter> <filter-name>CharacterEncodi ...
- Leetcode: Kth Smallest Element in a Sorted Matrix
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...
- M面经Prepare: Positive-Negative partitioning preserving order
Given an array which has n integers,it has both positive and negative integers.Now you need sort thi ...
- centos python nginx uwsgi
先更新系统,并安装编译环境等等. yum update yum install python python-devel libxml2 libxml2-devel python-setuptools ...
- Extjs布局
今天我来总结一下extjs下面的各种布局,不仅是为了给自己做笔记,同时,也希望让刚刚接触extjs的朋友们快速的了解下,大神就不用看了.废话不多说,开始布局的讲解. (以下代码都可以直接在javasc ...
- so baby come on~~
http://www.cnblogs.com/mfryf/archive/2013/05/17/3083895.html
- React-Native坑1:Invariant Violation:Application 项目名 has not been registered.
React-Native坑1:Invariant Violation:Application 项目名 has not been registered. 字数347 阅读1421 评论3 喜欢7 前言 ...
- angular 依赖注入
依赖注入 依赖注入(DI)是一个经典的设计模式, 主要是用来处理组件如何获得依赖的问题.关于DI,推荐阅读Martin Flower的文章(http://martinfowler.com/art ...