ASP.NET - TreeView控件,只操作最后一级节点

效果:

绑定TreeView控件:http://www.cnblogs.com/KTblog/p/4792302.html

主要功能:

  • 点击节点的时候,只操作最后一级的节点,其他节点跳过不执行代码。

代码:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Data;
  4 using System.Data.SqlClient;
  5 using System.Web.UI.WebControls;
  6
  7 namespace APManage
  8 {
  9     public partial class TreeView : System.Web.UI.Page
 10     {
 11         public string ConnString = @"server = HUANGFU-PC; database = DB_APManage; integrated security = true";
 12         public DataTable dt = null;
 13         public List<int> erjinode = new List<int>(); //存储非最后一级的节点
 14
 15         /// <summary>
 16         /// 初始化事件
 17         /// </summary>
 18         /// <param name="sender"></param>
 19         /// <param name="e"></param>
 20         protected void Page_Load(object sender, EventArgs e)
 21         {
 22             if (!IsPostBack)
 23             {
 24                 dt = new DataTable();
 25
 26                 GetMenuToDataTable("select * from Tb_APCategory", dt);
 27                 BindTree(dt, null, "1000");
 28             }
 29         }
 30
 31         /// <summary>
 32         /// 选择存储所有的非最后一级节点的ID
 33         /// </summary>
 34         public void SelectIsNotMainNode()
 35         {
 36             SqlConnection con = new SqlConnection(ConnString);
 37             con.Open();
 38             SqlCommand cmd = new SqlCommand("select ID from Tb_APCategory where ParentID = 1000", con);
 39             SqlDataReader sdr = cmd.ExecuteReader();
 40             while (sdr.Read())
 41             {
 42                 SqlConnection con_2 = new SqlConnection(ConnString);
 43                 con_2.Open();
 44                 SqlCommand cmd_2 = new SqlCommand("select ID from Tb_APCategory where ParentID = " + sdr["ID"].ToString() + "", con_2);
 45                 SqlDataReader sdr_2 = cmd_2.ExecuteReader();
 46                 while (sdr_2.Read())
 47                 {
 48                     erjinode.Add(Convert.ToInt32(sdr_2["ID"].ToString()));
 49                 }
 50                 erjinode.Add(Convert.ToInt32(sdr["ID"].ToString()));
 51             }
 52         }
 53
 54         /// <summary>
 55         /// 鼠标点击节点事件
 56         /// </summary>
 57         /// <param name="sender"></param>
 58         /// <param name="e"></param>
 59         protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
 60         {
 61             string node = this.TreeView1.SelectedNode.Value;//获得所选择节点的值,也就是表中的ID
 62             SelectIsNotMainNode();
 63             foreach (int item in erjinode)
 64             {
 65                 if (node == item.ToString())
 66                 {
 67                     ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert(‘不是最后一个节点!‘)</script>");
 68                     return;
 69                 }
 70             }
 71             ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert(‘"+node+"!‘)</script>");
 72         }
 73
 74         #region 绑定TreeView控件
 75
 76         /// <summary>
 77         /// 循环绑定TreView
 78         /// </summary>
 79         /// <param name="dtSource"></param>
 80         /// <param name="parentNode"></param>
 81         /// <param name="parentID"></param>
 82         private void BindTree(DataTable dtSource, TreeNode parentNode, string parentID)
 83         {
 84             DataRow[] rows = dtSource.Select(string.Format("ParentID={0}", parentID));
 85             foreach (DataRow row in rows)
 86             {
 87                 TreeNode node = new TreeNode();
 88                 node.Text = row["CategoryName"].ToString();
 89                 node.Value = row["ID"].ToString();
 90                 BindTree(dtSource, node, row["ID"].ToString());
 91                 if (parentNode == null)
 92                 {
 93                     this.TreeView1.Nodes.Add(node);
 94                 }
 95                 else
 96                 {
 97                     parentNode.ChildNodes.Add(node);
 98                 }
 99             }
100         }
101
102         /// <summary>
103         /// 绑定DataTable
104         /// </summary>
105         /// <param name="query"></param>
106         /// <param name="dt"></param>
107         /// <returns></returns>
108         private DataTable GetMenuToDataTable(string query, DataTable dt)
109         {
110             using (SqlConnection conn = new SqlConnection(ConnString))
111             {
112                 SqlCommand cmd = new SqlCommand(query, conn);
113                 SqlDataAdapter ada = new SqlDataAdapter(cmd);
114                 ada.Fill(dt);
115             }
116             return dt;
117         }
118
119         #endregion
120     }
121 }

时间: 2024-08-26 02:34:31

ASP.NET - TreeView控件,只操作最后一级节点的相关文章

ASP.Net TextBox控件只允许输入数字

原文:ASP.Net TextBox控件只允许输入数字 1.1.在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: <asp:TextBox ID="TextBox" runat="server" OnKeyPress="if(((event.keyCode>=48)&&(event.keyCode <=57))||(event.keyCode==46)) {event.ret

ASP.NET TreeView控件父子勾选框联动勾选

摘要:ASP.NET TreeView控件父子勾选框联动勾选 后置代码: this.TreeView1.Attributes.Add("onclick", "CheckEvent();"); JS 代码: function setParentState(objNode) { ?? var objParentDiv = WebForm_GetParentByTagName(objNode, "div"); ?? if (objParentDiv =

脚本全选全不选操作asp.net treeview控件

1 //树节点勾选(取消)上级自动全部勾选(取消)下级,勾选下级自动勾选上级,取消全部下级,自动取消上级 2 3 //事件响应函数 4 var HandleCheckbox = function () { 5 //取得事件触发的元素,因为只要点了树控件,就会触发这个函数,所以须判断:只有点击checkbox时才继续 6 var element = event.srcElement; 7 if (element.tagName == "INPUT" && element.

asp.net TreeView控件绑定数据库显示信息

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Data; 8 using System.Data.SqlClient; 9 using System.Configuration; 10 11 public part

ASP.NET TreeView控件的使用

<asp:TreeView ID="TreeView2" runat="server"></asp:TreeView> 数据库: 前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="TreeView.index" %> <

使用js如何获取treeview控件的当前选中的节点

var selectedNodeID = theForm.elements["<%=treeView1.ClientID%>_SelectedNode"].value;      if (selectedNodeID != "")       {        var selectedNode = document.getElementById(selectedNodeID);var text = selectedNode.innerHTML;}

WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色

本文转载:http://www.cnblogs.com/umplatform/archive/2012/08/29/2660240.html 在B/S开发中,对TreeView控件要改变当前选中节点的颜色比较方便,其有相应的SelectedNodeChanged事件进行控制,但对于WinForm则没有这样方便.申明一下,我在这儿所说的改变当前节点的字体与颜色,主要是在WinForm中的TreeView控件,当前选中节点后,其失去鼠标焦点后节点的字体与颜色失去了选中状态,层级一多,我们就不知道当前

C# TreeView控件 父节点子节点勾选变化关联

项目用到了TreeView控件,父节点子节点勾选需要关联.子节点勾选,父节点同步.父节点勾选,所有子节点都勾选,并递归.网上找了一圈,好多代码都不满足要求.节点勾选,向下递归子节点,都实现了.节点勾选,向上递归,父节点同步勾选,也实现了.但是节点去除勾选,应该判断其同级所有节点,若同级节点都处于未勾选状态,则应该去除父节点勾选状态,并向上递归.这一点,没有找到合适的代码.就自己写了这部分代码.仅仅只是实现这个效果,代码还有优化的空间,后续有时间再来修改了. private void treeVi

在TreeView控件节点中显示图片

实现效果: 知识运用: TreeView控件中Nodes集合的Add方法 //创建节点并将节点放入集合中 public virtual TreeNode Add (string key,string text,int imageIndex,int selectedImageIndex) 以及TreeView控件的ExpandAll方法 //可以展开TreeView控件中的所有树节点 public void ExpandAll() public void CollapseAll() //折叠 实现