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

使用母板页进行,左右页面进行跳转。
绑定TreeView控件:http://www.cnblogs.com/KTblog/p/4792302.html
主要功能:
- 点击节点的时候,只操作最后一级的节点,其他节点跳过不执行代码。
代码:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls; namespace APManage
{
public partial class TreeView : System.Web.UI.Page
{
public string ConnString = @"server = HUANGFU-PC; database = DB_APManage; integrated security = true";
public DataTable dt = null;
public List<int> erjinode = new List<int>(); //存储非最后一级的节点 /// <summary>
/// 初始化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dt = new DataTable(); GetMenuToDataTable("select * from Tb_APCategory", dt);
BindTree(dt, null, "");
}
} /// <summary>
/// 选择存储所有的非最后一级节点的ID
/// </summary>
public void SelectIsNotMainNode()
{
SqlConnection con = new SqlConnection(ConnString);
con.Open();
SqlCommand cmd = new SqlCommand("select ID from Tb_APCategory where ParentID = 1000", con);
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
SqlConnection con_2 = new SqlConnection(ConnString);
con_2.Open();
SqlCommand cmd_2 = new SqlCommand("select ID from Tb_APCategory where ParentID = " + sdr["ID"].ToString() + "", con_2);
SqlDataReader sdr_2 = cmd_2.ExecuteReader();
while (sdr_2.Read())
{
erjinode.Add(Convert.ToInt32(sdr_2["ID"].ToString()));
}
erjinode.Add(Convert.ToInt32(sdr["ID"].ToString()));
}
} /// <summary>
/// 鼠标点击节点事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
string node = this.TreeView1.SelectedNode.Value;//获得所选择节点的值,也就是表中的ID
SelectIsNotMainNode();
foreach (int item in erjinode)
{
if (node == item.ToString())
{
ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert('不是最后一个节点!')</script>");
return;
}
}
ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert('"+node+"!')</script>");
} #region 绑定TreeView控件 /// <summary>
/// 循环绑定TreView
/// </summary>
/// <param name="dtSource"></param>
/// <param name="parentNode"></param>
/// <param name="parentID"></param>
private void BindTree(DataTable dtSource, TreeNode parentNode, string parentID)
{
DataRow[] rows = dtSource.Select(string.Format("ParentID={0}", parentID));
foreach (DataRow row in rows)
{
TreeNode node = new TreeNode();
node.Text = row["CategoryName"].ToString();
node.Value = row["ID"].ToString();
BindTree(dtSource, node, row["ID"].ToString());
if (parentNode == null)
{
this.TreeView1.Nodes.Add(node);
}
else
{
parentNode.ChildNodes.Add(node);
}
}
} /// <summary>
/// 绑定DataTable
/// </summary>
/// <param name="query"></param>
/// <param name="dt"></param>
/// <returns></returns>
private DataTable GetMenuToDataTable(string query, DataTable dt)
{
using (SqlConnection conn = new SqlConnection(ConnString))
{
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataAdapter ada = new SqlDataAdapter(cmd);
ada.Fill(dt);
}
return dt;
} #endregion
}
}
ASP.NET - TreeView控件,只操作最后一级节点的更多相关文章
- ASP.Net TextBox控件只允许输入数字
原文:ASP.Net TextBox控件只允许输入数字 1.1.在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: <asp:TextBox ID= ...
- 树TreeView控件与DataTable交互添加节点(最高效的方法)
#region "读取树结点从Datatable" /// <summary> /// 读取树结点从Datatable" /// </summary&g ...
- 脚本全选全不选操作asp.net treeview控件
//树节点勾选(取消)上级自动全部勾选(取消)下级,勾选下级自动勾选上级,取消全部下级,自动取消上级 //事件响应函数 var HandleCheckbox = function () { //取得事 ...
- asp.net TreeView控件绑定数据库显示信息
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- asp 使用TreeView控件
这段代码为了使用 TreeNodeCheckChanged 事件,会有回刷新的效果: 不喜欢的可查看改进版,利用js控制选择操作,无界面刷新, “http://www.cnblogs.com/GoCi ...
- asp.net treeview控件无刷新选择和删除节点的ajax方法
转载 http://blog.csdn.net/luq885/article/details/1621681 如果节点被选择的话,节点所在的td的class属性就会被设置为TreeView1_1. ...
- 使用js如何获取treeview控件的当前选中的节点
var selectedNodeID = theForm.elements["<%=treeView1.ClientID%>_SelectedNode"].value; ...
- WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色
本文转载:http://www.cnblogs.com/umplatform/archive/2012/08/29/2660240.html 在B/S开发中,对TreeView控件要改变当前选中节点的 ...
- 在TreeView控件节点中显示图片
实现效果: 知识运用: TreeView控件中Nodes集合的Add方法 //创建节点并将节点放入集合中 public virtual TreeNode Add (string key,string ...
随机推荐
- 循环次数( M - 暴力求解、打表)
循环次数 Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i ...
- ubuntu安装greenplum依赖包
ubuntu安装greenplum的过程中有两个比较难找的包,特地写出来给大家分享一下: 错误提示1:configure: error: header file <ldap.h> is r ...
- Xcode插件(一)-规范注释生成器VVDocumenter
原文来自:http://blog.csdn.net/hitwhylz/article/details/27813315 分享几个常用的Xcode插件. 第一个, 规范注释生成器VVDocumenter ...
- [转] Chrome 控制台不完全指南
转自: http://www.cnblogs.com/Wayou/p/chrome-console-tips-and-tricks.html#home Chrome的开发者工具已经强大到没朋友的地步了 ...
- C语言--union关键字(转载)
union维护足够的空间来放置多个数据成员中的“一种”,而不是为每一个数据成员配置空间.在union中,所有的数据成员共用一个空间,同一时间只能存储其中一个数据成员,所有的数据成员具有相同的起始地址.
- Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)
尽管QT5.5.1和VisualStudio 2015都已经发布很久了,但是QT项目组视乎不会为QT5.5.1专门发布预编译的QT5.5.1 for windows(2015)版本的,也不会专门发布V ...
- 数据库中操作XML(openXML)
最近公司项目需要在数据库中操作XML,因此系统的学习了一下 一.openxml的格式 OPENXML( idoc int [ in] , XPathnvarchar [ in ] , [ flags ...
- CF(437C)The Child and Toy(馋)
意甲冠军:给定一个无向图,每个小点右键.操作被拉动所有点逐一将去,直到一个点的其余部分,在连边和点拉远了点,在该点右点的其余的费用.寻找所需要的最低成本的运营完全成本. 解法:贪心的思想,每次将剩余点 ...
- java--从控制台读入一些数据
学一些东西应该,学以致用: 现在我开始使用流的办法从控制台读取数据 import java.io.*; public class Demo2{ public static void main(Stri ...
- OC补充
OC 1成员变量默认初始化为0 2匿名对象:就是没有名字的对象,比如:(不建议使用) 3 [Car new]->speed = 300; [[Car new] run];(运行结果speed为0 ...