- 浏览: 98778 次
- 性别:
- 来自: 北京
文章分类
最新评论
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI.WebControls;
///
<summary>
///
Heros TreeView保存和恢复结点展开状态的辅助类
///
</summary>
public
class
TreeNodesExpandStateManager : IDisposable
{
TreeView _tree;
List
<
TreeNode
>
nodes
=
new
List
<
TreeNode
>
();
public
static
string
SessionKey
=
"
TreeNodesExpandState
"
;
public
TreeNodesExpandStateManager(TreeView tree)
{
_tree
=
tree;
}
///
<summary>
///
保存当前树的展开状态
///
</summary>
public
void
SaveExpandState()
{
foreach
(TreeNode node
in
this
._tree.Nodes)
{
SearchExpandedNode(node);
}
}
private
void
SearchExpandedNode(TreeNode node)
{
if
(node
==
null
)
return
;
else
{
if
(node.Expanded
??
false
)
{
nodes.Add(node);
foreach
(TreeNode item
in
node.ChildNodes)
{
SearchExpandedNode(item);
}
}
}
}
///
<summary>
///
恢复当前树的展开状态
///
</summary>
public
void
RestoreExpandState()
{
foreach
(TreeNode node
in
this
._tree.Nodes)
{
SetNodeExpandState(node);
}
}
///
<summary>
///
用于跨页操作时,恢复到指定树
///
</summary>
///
<param name="tree"></param>
public
void
RestoreExpandStateToTree(TreeView tree)
{
foreach
(TreeNode node
in
tree.Nodes)
{
SetNodeExpandState(node);
}
}
private
void
SetNodeExpandState(TreeNode node)
{
if
(node
==
null
)
return
;
else
{
if
(
this
.nodes.Contains(node,
new
EqualEntity()))
{
node.Expand();
foreach
(TreeNode item
in
node.ChildNodes)
{
SetNodeExpandState(item);
}
}
}
}
///
<summary>
///
将指定树展开状态存入会话,一般在树的展开和合闭事件中调用
///
</summary>
///
<param name="tree">
目标树
</param>
public
static
void
SaveExpandStateInSession(TreeView tree,
string
sessionKey)
{
if
(tree
==
null
)
return
;
TreeNodesExpandStateManager manager
=
new
TreeNodesExpandStateManager(tree);
manager.SaveExpandState();
HttpContext.Current.Session[sessionKey]
=
manager;
}
///
<summary>
///
将指定树展开状态存入默认会话,一般在树的展开和合闭事件中调用
///
</summary>
///
<param name="tree">
目标树
</param>
public
static
void
SaveExpandStateInSession(TreeView tree)
{
SaveExpandStateInSession(tree, SessionKey);
}
///
<summary>
///
将Session中的结点展开状态恢复到指定树,在树结点添加结束后调用
///
</summary>
///
<param name="tree">
目标树
</param>
public
static
void
RestoreExpandStateToTreeFromSession(TreeView tree,
string
sessionKey)
{
if
(HttpContext.Current.Session[sessionKey]
==
null
||
tree
==
null
)
return
;
TreeNodesExpandStateManager manager
=
HttpContext.Current.Session[sessionKey]
as
TreeNodesExpandStateManager;
manager.RestoreExpandStateToTree(tree);
}
///
<summary>
///
将默认Session中的结点展开状态恢复到指定树,在树结点添加结束后调用
///
</summary>
///
<param name="tree">
目标树
</param>
public
static
void
RestoreExpandStateToTreeFromSession(TreeView tree)
{
RestoreExpandStateToTreeFromSession(tree, SessionKey);
}
#region
IDisposable 成员
public
void
Dispose()
{
this
.nodes.Clear();
this
.nodes
=
null
;
this
._tree.Dispose();
}
#endregion
~
TreeNodesExpandStateManager()
{
this
.Dispose();
}
public
class
EqualEntity : IEqualityComparer
<
TreeNode
>
{
#region
IEqualityComparer<TreeNode> 成员
public
bool
Equals(TreeNode x, TreeNode y)
{
if
(x
==
null
||
y
==
null
)
return
false
;
return
x.Value.Equals(y.Value);
}
public
int
GetHashCode(TreeNode obj)
{
return
obj.GetHashCode();
}
#endregion
}
}
发表评论
-
C#操作SAS
2011-01-21 18:37 1168using System; using System ... -
ADO.NET Entity Framework学习笔记(5)ESQL查询语句
2010-12-01 12:52 1103比起 LINQ to SQL,EF 除了提供 LINQ 查询方 ... -
ADO.NET Entity Framework学习笔记(4)ObjectQuery对象
2010-12-01 12:50 1435ObjectQuery<T>数据加载方式 1. ... -
ADO.NET Entity Framework学习笔记(3)ObjectContext对象
2010-12-01 11:48 1072说明 ObjectContext提供了管理数据的功能 ... -
ADO.NET Entity Framework学习笔记(2)建模
2010-12-01 11:46 1343模型结构 [概念模型]中要有[实体键], [实体键] ... -
ADO.NET Entity Framework学习笔记(1)介绍
2010-12-01 11:44 1496LINQ to Entities 一种 ... -
Web Service简介
2010-12-01 11:08 7711.1 、 Web Service 基本概念 ... -
决定何时使用 DataGrid、DataList 或 Repeater
2010-11-26 17:28 931本页内容 简介 数据 Web 控件之间的相似 ... -
C#中抽象类和接口的区别
2010-11-26 17:27 661对于抽象类以及接口的 ... -
学习asp.net比较完整的流程
2010-11-26 10:34 701如果你已经有较多的面向对象开发经验,跳过以下这两步: ...
相关推荐
演示了C#的treeView控件的绝大部分常用操作. 加入兄弟结点,子结点,删除结点,取结点的相关信息,结点保存进xml,由xml载入等.
资源主要是结合博客文章:http://blog.csdn.net/eastmount/article/details/21241313主要讲述使用C# winForm实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录,并点击结点文件夹能在...
vs2005,vs2008软件都可打开 能对Treeview控件的结点进行双击编辑 Treeview之间的结点可以相互拖动,并自动更改名字 如果拖动错误,可以撤销还原为原来的状态
asp.net 2.0中TREEVIEW中动态增加结点.rar
一个TreeView控件,它以不同的方式实现多项选择
觉得树控件的背景白色太单调了?这个类可以非常方便简单的帮您的树控件加上背景图片,让您的界面更加美观:)
该文档做了一个excel treeView控件的样例,有展开结点,收缩结点,添加结点,修改结点,删除结点,关闭结点,并附上注释供参考
自定义TreeView控件,通过递归地方式实现显示xml文件,可以通过右键增加兄弟节点、子节点,并且可以删除结点,可以用来学习如何手工绑定数据到TreeView控件中
函数功能:实现带checkbox的treeview中 1、选中父结点其子结点也全部选中 2、取消全部子结点的选择后,父结点的选择也随之取消 使用方法:1、在<head></head>中间添加CheckNode(currentNode)、...
包含内容部分示例: GridView导出excel 小山的TreeView数据绑定方法 ADO.NET在开发中的部分使用方法和技巧.txt ADO.NET中的视图和过滤器.doc ASP .NET - ArrayList对象.txt ...在ASP.NET中使用Treeview控件和XML.txt
ASP.NET学习大全,包括以下文档: GridView导出excel 小山的TreeView数据绑定方法 ADO.NET在开发中的部分使用方法和技巧.txt ADO.NET中的视图和过滤器.doc ...在ASP.NET中使用Treeview控件和XML.txt
该程序是vs2005下的关于控件内容的拖动,treeview结点的拖动及文件相关。是个不错的研究程序.
1、准确模拟window TreeView控件外观与行为。2、从数据库中读取结点结构,理论上可以无限级分级。3、对每个结点可以定义标题、说明、连接地址、连接目标、结点图标、结点打开时的图标。
商品分类浏览模块:用TreeView控件,循 环插入结点,直到全部完成; 购物车模块:用户登录后,可不断购买商 品,即向购物车中添加商品,用户查看购 物车并可提交或清空购物车继续购买
C#有关treeview的操作,了解C#控件的使用,以及C#的有关操作,有利于结点的产生。
使用TreeView控件显示导航信息 使用Menu控件显示导航信息 演示和练习:在母版页中使用Menu控件实现站点导航 使用SiteMapPath控件描述当前页面位置 自定义SiteMapPath控件的结点模版 演示和练习:在母版页中使用...
6 <br>0014 如何锁定窗体中的控件 6 <br>0015 统一窗体中控件的字体设置 7 <br>0016 通过“格式”菜单布局窗体 7 <br>0017 起始页中的“Visual Studio开发人员新闻” 7 <br>1.3 MSDN帮助的...
主要为大家详细介绍了JavaFX实现拖拽结点效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
菜单采用TreeView+Sql数据库动态控制,可以进行权限及用户的管理操作,用户登录采用验证码进行校验,公用部分采用用户控件 树的操作说明如下: (1):单击【添加】按钮添加表结点,和结点相关联的表及其描述不能为...