zoukankan
html css js c++ java
TreeView状态保存
很多时候会看到,使用Treeview的时候展开这个节点,到另外一个页面的时候Treeview的状态又恢复了,下面就是解决方法咯
新建一个类
public
class
TreeViewState
...
{
public
void
SaveTreeView(TreeView treeView,
string
key)
...
{
List
<
bool
?>
list
=
new
List
<
bool
?>
();
SaveTreeViewExpandedState(treeView.Nodes, list);
HttpContext.Current.Session[key
+
treeView.ID]
=
list;
}
private
void
SaveTreeViewExpandedState(TreeNodeCollection nodes, List
<
bool
?>
list)
...
{
foreach
(TreeNode node
in
nodes)
...
{
list.Add(node.Expanded);
if
(node.ChildNodes.Count
>
0
)
...
{
SaveTreeViewExpandedState(node.ChildNodes, list);
}
}
}
private
int
RestoreTreeViewIndex;
public
void
RestoreTreeView(TreeView treeView,
string
key)
...
{
RestoreTreeViewIndex
=
0
;
RestoreTreeViewExpandedState(treeView.Nodes,
(List
<
bool
?>
)HttpContext.Current.Session[key
+
treeView.ID]
??
new
List
<
bool
?>
());
}
private
void
RestoreTreeViewExpandedState(TreeNodeCollection nodes, List
<
bool
?>
list)
...
{
foreach
(TreeNode node
in
nodes)
...
{
if
(RestoreTreeViewIndex
>=
list.Count)
return
;
node.Expanded
=
list[RestoreTreeViewIndex
++
];
if
(node.ChildNodes.Count
>
0
)
...
{
RestoreTreeViewExpandedState(node.ChildNodes, list);
}
}
}
}
在页面代码,TreeView的控件里事件里写
protected
void
TreeViewMain_Unload(
object
sender, EventArgs e)
...
{
//
save the state of all nodes.
new
TreeViewState().SaveTreeView(TreeViewMain,
this
.GetType().ToString());
}
查看全文
相关阅读:
basis 文档
profile default1
profile default
2101244
Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)
1816647
lvm管理:扩展lv、删除pv、lv等
HPUX and AIX SSH 互信
SLD Related Gateway Serivces Unavaliable
[原创]K8 MSF Bind Shell TCP 连接工具
原文地址:https://www.cnblogs.com/javabin/p/1583003.html
最新文章
php—Smarty-1 (18)
WebService-php- 2(17)
others-大型web系统各个子系统架构图
MM-科目自动分配
MM-分割评估
MM-移动类型
MM-物料分类帐差异分摊
工程数学-课件
FICO-初级会计学
FI-盘盈盘亏借贷科目
热门文章
数据库之mysql篇(5)—— 【转载】mysql练习题
数据库之mysql篇(4)—— navicat操作mysql
数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据
数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置
洗礼灵魂,修炼python(90)-- 知识拾遗篇 —— 协程
洗礼灵魂,修炼python(89)-- 知识拾遗篇 —— 进程
洗礼灵魂,修炼python(88)-- 知识拾遗篇 —— 线程(2)/多线程爬虫
洗礼灵魂,修炼python(87)-- 知识拾遗篇 —— 线程(1)
洗礼灵魂,修炼python(86)--全栈项目实战篇(12)—— 利用socket实现文件传输/并发式聊天
ASCS HA
Copyright © 2011-2022 走看看
很多时候会看到,使用Treeview的时候展开这个节点,到另外一个页面的时候Treeview的状态又恢复了,下面就是解决方法咯
新建一个类
...{
public void SaveTreeView(TreeView treeView, string key)
...{
List<bool?> list = new List<bool?>();
SaveTreeViewExpandedState(treeView.Nodes, list);
HttpContext.Current.Session[key + treeView.ID] = list;
}
private void SaveTreeViewExpandedState(TreeNodeCollection nodes, List<bool?> list)
...{
foreach (TreeNode node in nodes)
...{
list.Add(node.Expanded);
if (node.ChildNodes.Count > 0)
...{
SaveTreeViewExpandedState(node.ChildNodes, list);
}
}
}
private int RestoreTreeViewIndex;
public void RestoreTreeView(TreeView treeView, string key)
...{
RestoreTreeViewIndex = 0;
RestoreTreeViewExpandedState(treeView.Nodes,
(List<bool?>)HttpContext.Current.Session[key + treeView.ID] ?? new List<bool?>());
}
private void RestoreTreeViewExpandedState(TreeNodeCollection nodes, List<bool?> list)
...{
foreach (TreeNode node in nodes)
...{
if (RestoreTreeViewIndex >= list.Count) return;
node.Expanded = list[RestoreTreeViewIndex++];
if (node.ChildNodes.Count > 0)
...{
RestoreTreeViewExpandedState(node.ChildNodes, list);
}
}
}
}
在页面代码,TreeView的控件里事件里写
...{
// save the state of all nodes.
new TreeViewState().SaveTreeView(TreeViewMain, this.GetType().ToString());
}