asp.net 树形目录

.NET 表达式目录树 Expression /通过下面方法得到x.Id.ToString().IndexOf(“5”) ,MethodCallExpression继承于Expression。//得到x => x.Id.ToString().IndexOf(“5”) >= 0,后面的一个参数指的是x,如果有多个则指定多个。//通过lambdaResult.Compile()得到Func这样的委托,然后Invoke是调用委托。//得到IndexOf的方法,然后new Type[]这个代表是得到参数为string的一个方法。 阅读详情
 
 原来在论坛里发过专题帖子,只是由于帖子丢失原因,有些问题找不到了,同时这次也补充了一些,发到文档区以方便查询吧
原贴
http://expert.youkuaiyun.com/Expert/topic/1525/1525202.xml
1.下载地址
http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp
下载后是后缀为bat的版本
(1)bulid.将bulid.bat的路径指向csc.exe所在路径,生成Microsoft.Web.UI.WebControls.dll。
(2)在wwwroot下创建空目录webctrl_client/1_0。
(3)将build/Runtime下的文件拷至webctrl_client/1_0下。
(4)选择工具箱的自定义工具箱,添加Microsoft.Web.UI.WebControls.dll。
有些麻烦
但如果你能找到后缀是msi的自动安装版本,直接下一步就行(我一直用这个版本,hoho)
安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里
2.运行时无法显示
一般是TreeView的版本问题,最好下载英文版自动安装版本重新安装,安装前应该先到添加删除程序里卸掉原版本
3.显示格式出错(非树状显示)
TreeView要求客户端浏览器版本为IE5.5及以上,最好要求客户端升级为IE6.0
4.框架里使用TreeView
设置NavigateUrl、Target属性,可更新另外的Frame
5.找不到TreeNode类
使用TreeView,最好添加namespace:using Microsoft.Web.UI.WebControls;
6.遍历TreeView节点(递归算法)
private   void  Page_Load( object  sender, System.EventArgs e)
{
 GetAllNodeText(TreeView1.Nodes);
}

void  GetAllNodeText(TreeNodeCollection tnc)
{
 
foreach(TreeNode node in tnc)
 
{
  
if(node.Nodes.Count!=0)
   GetAllNodeText(node.Nodes);
  Response.Write(node.Text 
+ " ");
 }

}

7.得到node结点的父节点
TreeNode pnode;
if (node.Parent  is  TreeNode)
 pnode
= (TreeNode)node.Parent;
else
 
// node is root node

8.修改TreeView样式(示例)
< iewc:TreeView  id ="TreeView1"  runat ="server"  HoverStyle ="color:blue;background:#00ffCC;"  DefaultStyle ="background:red;color:yellow;"  SelectedStyle ="color:red;background:#00ff00;" >

用代码:
TreeView1.DefaultStyle["font-size"] = "20pt";
9.展开时不提交,改变选择节点时才提交
将autopostback设置成false; 
在body里添加  <body  onload="initTree()"> 
然后在PageLoad里写: 
string   strTreeName   =    " TreeView1 " ; 
string   strRef   =   Page.GetPostBackEventReference(TreeView1); 
string   strScript   =    " <script  language="JavaScript">   "    +    " <!--   "    +    "             function  initTree()  {   "    + "                          "    +   strTreeName   +    " .onSelectedIndexChange  =  function()  {   "    +      " if  (event.oldTreeNodeIndex  !=   
event .newTreeNodeIndex)   "   +   " this .queueEvent( ' onselectedindexchange ' ,   event .oldTreeNodeIndex   +    ' , '    +    event .newTreeNodeIndex);   "   +     " window.setTimeout( ' "  +  strRef.Replace(" '" , " / ' ")    +  " ' ,   0 ,   ' JavaScript ' );   "   +     "                         }   "   +       "             }   "   +     " //   -->  "  +  "</script>"; 
Page.RegisterClientScriptBlock( " InitTree " ,strScript  );  

 
这样就只有你点击的节点更改的时候才提交!
10.TreeView结合XML
把XML文件设置为如下格式,然后直接设置TreeNodeSrc为该XML文件就行
<? xml version="1.0" encoding="GB2312" ?>
< TREENODES >
 
< TREENODE  TEXT ="node0"  EXPANDED ="true" >
  
< TREENODE  TEXT ="node1" />
  
< TREENODE  TEXT ="node2" />
 
</ TREENODE >
 
< TREENODE  TEXT ="node3"  NavigateURL ="3.aspx" />
</ TREENODES >

或者用代码
TreeView1.TreeNodeSrc="a.xml";
TreeView1.DataBind();
 
客户端控制TreeView
http://expert.youkuaiyun.com/Expert/topic/1382/1382892.xml
1 .设置所选节点,如选中第二个节点
function  SetSelNode()
{
 TreeView1.selectedNodeIndex
="1";
}

2 .得到所选节点的Text,ID或NodeData
function  GetAttribute()
{
 alert(TreeView1.getTreeNode(TreeView1.selectedNodeIndex).getAttribute(
"Text"));
}

替换Text为ID或NodeData,可分别得到所选节点的ID或NodeData
3 .修改节点属性,如修改第一个节点的Text
function  ModifyNode()
{
 
var node=TreeView1.getTreeNode("0");
 node.setAttribute(
"Text","hgknight");
}

4 .得到点击节点
function  TreeView1.onclick()
{
 alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute(
"Text"));
}

5 .添加节点
function  AddNode()
{
 
var node=TreeView1.createTreeNode();
 node.setAttribute(
"Text","hgknight");
 TreeView1.add(node);   
}

6.js遍历所有节点
 var AllRootNode = new  Array();
 AllRootNode
= TreeView1.getChildren();
 AlertNode(AllRootNode);  
 function AlertNode(NodeArray)
 
{
  
if(parseInt(NodeArray.length)==0)
   
return;
  
else
  
{
   
for(i=0;i<NodeArray.length;i++)
   
{
    var cNode;
    cNode
=NodeArray[i];
    alert(cNode.getAttribute(
"Text"));
    
if(parseInt(cNode.getChildren().length)!=0)
     AlertNode(cNode.getChildren());   
   }

  }

 }

 

--------------------------------------------------------------------------------
两个客户端操作TreeView节点CheckBox的小例子     选择自 hgknight 的 Blog 
关键字   TreeView CheckBox javascript
 
 
第一个例子是当取消或选中节点选中状态时,子节点也做相应的取消或选中变化
需要注意的是如果要初始设置TreeNode为选中状态,只能在客户端设置。如果在服务器端设置TreeNode为选中状态,则在客户端使用getAttribute("Checked"),得到的值永远是true。

<% @ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  %>
< HTML >
 
< HEAD >
  
< script  language ="C#"  runat ="server" >
   private 
void Page_Load(object sender, System.EventArgs e)
   
{  
    TreeView1.Attributes.Add(
"oncheck","tree_oncheck(this)");
   }

  
</ script >
  
< script  language ="javascript" >
<!--
//初始化选中节点
function initchecknode()
{
 
var node=TreeView1.getTreeNode("1");
 node.setAttribute(
"Checked","true");
 setcheck(node,
"true");
 FindCheckedFromNode(TreeView1);
}

//oncheck事件
function tree_oncheck(tree)
{
 
var node=tree.getTreeNode(tree.clickedNodeIndex);
 
var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
 setcheck(node,Pchecked);
 document.all.checked.value
="";
 document.all.unchecked.value
="";
 FindCheckedFromNode(TreeView1);
}

//设置子节点选中
function setcheck(node,Pc)
{
 
var i;
 
var ChildNode=new Array();
 ChildNode
=node.getChildren();
 
 
if(parseInt(ChildNode.length)==0)
  
return;
 
else
 
{
  
for(i=0;i<ChildNode.length;i++)
  
{
   
var cNode;
   cNode
=ChildNode[i];
   
if(parseInt(cNode.getChildren().length)!=0)
    setcheck(cNode,Pc);
   cNode.setAttribute(
"Checked",Pc);
  }

 }

}

//获取所有节点状态
function FindCheckedFromNode(node) {
 
var i = 0;
 
var nodes = new Array();
 nodes 
= node.getChildren();
 
 
for (i = 0; i < nodes.length; i++) {
  
var cNode;
  cNode
=nodes[i];
  
if (cNode.getAttribute("Checked"))
   AddChecked(cNode);
  
else
      AddUnChecked(cNode);
 
  
if (parseInt(cNode.getChildren().length) != 0 ) {
   FindCheckedFromNode(cNode);
  }

 }

}

//添加选中节点
function AddChecked(node) {
 document.all.checked.value 
+= node.getAttribute("NodeData");
 document.all.checked.value 
+= ',';
}

//添加未选中节点
function AddUnChecked(node) {
 document.all.unchecked.value 
+= node.getAttribute("NodeData");
 document.all.unchecked.value 
+= ',';
}

//-->
  
</ script >
 
</ HEAD >
 
< body  onload ="initchecknode()" >
  
< iewc:TreeView  id ="TreeView1"  runat ="server"  ExpandLevel ="5" >
   
< iewc:TreeNode  NodeData ="0"  CheckBox ="True"  Text ="Node0"  Expanded ="True" >
    
< iewc:TreeNode  NodeData ="1"  CheckBox ="True"  Text ="Node1"  Expanded ="True" ></ iewc:TreeNode >
    
< iewc:TreeNode  NodeData ="2"  CheckBox ="True"  Text ="Node2"  Expanded ="True" >
     
< iewc:TreeNode  NodeData ="3"  CheckBox ="True"  Text ="Node3"  Expanded ="True" >
      
< iewc:TreeNode  NodeData ="4"  CheckBox ="True"  Text ="Node4"
Expanded
="True" ></ iewc:TreeNode >
     
</ iewc:TreeNode >
    
</ iewc:TreeNode >
   
</ iewc:TreeNode >
   
< iewc:TreeNode  NodeData ="5"  CheckBox ="True"  Text ="Node5"  Expanded ="True" >
    
< iewc:TreeNode  NodeData ="6"  CheckBox ="True"  Text ="Node6"  Expanded ="True" ></ iewc:TreeNode >
   
</ iewc:TreeNode >
   
< iewc:TreeNode  NodeData ="7"  CheckBox ="True"  Text ="Node7"  Expanded ="True" >
    
< iewc:TreeNode  NodeData ="8"  CheckBox ="True"  Text ="Node8"  Expanded ="True" >
     
< iewc:TreeNode  NodeData ="9"  CheckBox ="True"  Text ="Node9"
Expanded
="True" ></ iewc:TreeNode >
    
</ iewc:TreeNode >
   
</ iewc:TreeNode >
  
</ iewc:TreeView >< P >
   
< TABLE  id ="Table1"  cellSpacing ="1"  cellPadding ="1"  width ="300"  border ="1" >
    
< TR >
     
< TD >
      
< asp:Label  id ="Label1"  runat ="server" > checked </ asp:Label ></ TD >
     
< TD >
      
< INPUT  id ="checked"  type ="text"  size ="32" ></ TD >
    
</ TR >
    
< TR >
     
< TD >
      
< asp:Label  id ="Label2"  runat ="server" > unchecked </ asp:Label ></ TD >
     
< TD >< INPUT  id ="unchecked"  type ="text"  size ="32" ></ TD >
    
</ TR >
   
</ TABLE >
   
< br >
  
</ P >
 
</ body >
</ HTML >

 
第二个例子是关于如何在服务器端得到客户端设置后的节点选中状态
<% @ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls,
Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<HTML>
 
<HEAD>
  
<script language="C#" runat="server">
   
private void Button1_Click(object sender, System.EventArgs e)
   {
    Response.Write(TreeView1.Nodes[
0].Checked);
   }
  
</script>
  
<script language="javascript">
   
function set_check()
   {
    var nodeindex 
= "0";
    var node
=TreeView1.getTreeNode(nodeindex);
    node.setAttribute(
"Checked","True");
    TreeView1.queueEvent(
'oncheck', nodeindex);
   }
  
</script>
 
</HEAD>
 
<body>
  
<form id="TestTree" method="post" runat="server">
   
<iewc:TreeView id="TreeView1" runat="server">
    
<iewc:TreeNode CheckBox="True" Text="Node0"></iewc:TreeNode>
   
</iewc:TreeView>
   
<br>
   
<input type="button" value="set check" onclick="set_check()">
   
<br>
   
<asp:Button id="Button1" runat="server" Text="submit" OnClick="Button1_Click"></asp:Button>
  
</form>
 
</body>
</HTML>

 
asp.net树形结构列表 完整的asp.net树形结构实现源码,能运行 立即下载

相关推荐

asp.net树形结构菜单demo/无限级分类/zTree

jquery的一个插件zTree.此demo是用vs08+sql2005写的 可任意修改 像样更多的功能和外观 就去zTree官网下一个 我写的这个是动态的 就是说是连接数据库的 class表 必须的字段 ID 父ID 还有类别名称。 不懂的可以随时问我

ASP.NET中树状目录和导航条的应用

小技巧:Ctrl+Table键,在Visual Stadio中进行两个页面之间的切换。 树状目录:TreeView A、重要属性:ShowLines、SelectionExpand(点节点的时候不刷新页面)、ExpandPath(路径)。 B、外观的设置属性:设置一系列的style,下面就来介绍介绍这些重要的样式style: 第一:RootNodeStyle根节点样式的设置。 第二:le

muximuxi_kgsecond的专栏 1714

ASP.NET目录树

利用xml作为数据源,在asp.net中实现的目录树

(十一).net表达式目录树Expression

表达式目录树Expression拆解,动态拼装,生成sql等

lwy 1849

asp.net 获取指定文件夹下所有子目录及文件(树形)

asp.net获取指定文件夹下所有子目录及文件,现在有asp.net的站的就是用这样的原理显示文件的

EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例

代码如下:<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Main.aspx.cs” Inherits=”Manage_Main” %> <!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>    <meta http-equiv=”Co

element + vue + .net core 3.1 树结构制作文件目录

element tree控件制作文件目录 .net core 3.1 对于core 3.1 来说我们.net中常用的取文件的虚拟目录是没发用的例如: Request.MapPath(""); 所以对于core来说我们只能在项目跑起来的时候告诉它,我们站点有这么一个虚拟文件夹,这个文件夹对应我们项目的真实物理路径文件夹,所以我们可以在我们的appsettings.json当中写好我们的配置 记住以下真实路径在电脑中一定要存在,如果不存在的话项目跑起来的时候会报错的,发布项目如果碰见了 500.30 报错的话请

qq_42194357的博客 1273

WinForm制作文件传输助手,Tcp局域网传输文件,传输速度受限于宽带和硬盘速度上限

文件传输助手为什么会出现,是因为项目上有些特殊的地方限制太多了,连插硬盘都需要关软件,联网又要开很不方便,网络限制一般软件只能局域网通信,还要开特定的端口等,你才能在电脑上通信,这样和机房的服务器远程的时候文件就不好拿过去,又不可能每次都去开机房的门。现在这个功能比较简单,只能单文件发送,但是其实比U盘硬盘方便,一般的六类网线传输压缩包在50M/s以上,U盘硬盘复制就不行了,特别如果是像我们学校这种网络结构,一个学校都在一个局域网,那真的方便!普通的局域网用特定IP和端口,通信也是很方便的。

m0_69233031的博客 1672

ASP.NET 树形菜单目录设计

目录结构存储在数据库中,表结构如下: id 节点id号 name 节点名称 parentid 节点的父节点id号 navigateurl 节点指向的url地址 代码如下: 设计一个 MenuTree类 1.添加System.Web.UI.WebControls的引用 public class MenuTree { private Tree...

weixin_30724853的博客 646

PyCharm配置及使用Git教程

平时习惯在Windows下开发,但是我们又需要实时将远方仓库的代码clone到本地,也需要将自己修改的代码push到远端服务器。

酒酿小圆子呀~ 4万+

Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南

本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。

weixin_29213655的博客 382

在ASP.NET中应用TreeView控件

事情的起因是这样的,编写的ASP.NET程序,其中有一部分页面是显示一个树行的目录。但是此目录是动态的,是从数据库中检索,然后将节点加入到此树形目录中。TreeView是Windows标准控件,在VS.NET中编写ASP.NET程序的时候,面板上并没有这个控件,不过微软又发布了IEWebControl,其中就包含WEB下的TreeView控件。但是想要真正的应用此控件,却不是那么容易了。因为其文档...

wangxiaohigh 91

FitzHugh-Nagumo 模型连续-MATLAB仿真

【代码】FitzHugh-Nagumo 模型连续-MATLAB仿真。

qq_43688618的博客 884

简单高效的asp.net目录树源代码

前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Tree._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www...

weixin_34408624的博客 283

手把手教你配置SAP PP供应区域(Supply Area):实现线边仓精准发料与物料流优化

本文详细解析了SAP PP供应区域(Supply Area)的配置方法,帮助企业实现线边仓精准发料与物料流优化。通过三级优先级逻辑和四步配置法,系统可自动识别最优组件来源位置,显著提升生产订单处理效率和库存准确率。文章还提供了典型问题解决方案和性能优化技巧,适用于离散制造和重复制造场景。

weixin_29275257的博客 434

Codex 100个真实案例 - 用AI做英语单词计划学习工具(记忆曲线+测验)

背单词是英语学习的基本功,但市面上的背单词 APP 要么收费、要么广告太多。本案例用 Codex 从零打造一个 **英语单词计划学习工具**,实现 SM-2 间隔重复算法(Anki 的核心算法)、单词本增删改查、多种测验模式(选择题/拼写/听写)、TTS 发音播放,以及学习数据的可视化统计图表。全程用自然语言驱动 Codex,用 Python 写后端逻辑 + 终端 UI,打造你的私人背单词助手!

yueyeguzhuo的专栏 203

DropDownList中显示无限级树形结构

效果图: 数据库表: DirID:目录的ID,ParentID:目录的父路径ID,Name:目录的名字 主要代码: usingSystem; usingSystem.Collections; usingSystem.Configuration; usingSystem.Data; usingSystem.Linq; usingSyste...

weixin_33853794的博客 96

vue3 - 最新详细实现高德地图绘制动态热力图详细教程,在某区域或城市地图上做“热力图层“展示人流量、旅游人口密度、热量图、全国地区地理热力图,利用颜色的深浅表示密度或强度等场景(详细示例代码教程)

vue3,nuxt3,高德地图,热力图,绘制热力图层,人流量,vue3使用高德地图实现某个区域热力图,vue3高德地图api加载热力图及关闭,接收热力图数据并渲染热力图,关掉热力图,Vue使用高德API制作热力图,热力图加载不出来,电子围栏围住热力图,vue3中使用高德地图渲染热力图组件,高德地图使用热力图详细教程,报错,卡顿,出不来怎么办,无法关闭,怎么解决这个问题,出错,城市名称,城市某个街道,城区,省份,市区,县城,乡镇,村,各省份的热力图,交通流量,人口流量,密度,旅游出行,人口数量,颜色介绍,深浅

✅ 精选推荐文章 5205

IE Web Control介绍以及TreeView 控件树形结构不能显示的问题

在用TreeView控件前,相信您一定装有Microsoft公司发布的IE Web Control又称做IE WEB控件。是Microsoft公司2002年发布的WEB控件集,其中包含了4种ASP.NET WEB 控件:MultiPage Web控件、TabStrip Web控件、Toolbar Web控件以及TreeView Web控件。其IE WEB Control下载地址:http://fi...

weixin_33895516的博客 443

QCC304x系列开发教程(实战篇)之5.2 QCC3040之提示音

earbud_init.c中,初始化table中UiPrompts_Init /*! \brief Table of initialisation functions */ static const init_table_entry_t appInitTable[] = { ......... {UiPrompts_Init, 0, NULL}, ......... } ui_prompts.c中是提示音音处理的主要逻辑和配置源文件 函数static void uiPro...

心跳包的博客 2395

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TreeView 树形控件 - asp.net

前台: &lt;asp:TreeView ID="TreeView1" runat="server" ImageSet="Msdn" NodeIndent="10" ShowLines="True" ExpandDepth="0"&gt; &lt;ParentNodeStyle Font-Bold="False"

weixin_33910385的博客 158

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: javascript 精华贴
下一篇: 在JavaScript中调用WebService
jackeyabc
博客等级 码龄20年 71粉丝 297原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值