runxinzhi.com
首页
百度搜索
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());
}
相关阅读:
form表单为什么不能提交
遇到了消息堆积,但是问题不大
面试题:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?
Dubbo学习地址
Dubbo入门到实战2
Dubbo入门到实战
Mybatis 的三种执行器
从源码理解Druid连接池原理
Getting NoSuchMethodError:javax.servlet.ServletContext.getVirtualServerName()
解决问题:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
原文地址:https://www.cnblogs.com/javabin/p/1583003.html
最新文章
oracle执行存储过程或批处理的语法格式
oracle使用编程时输出测试结果dbms_output.put_line
fastdfs删除图片清楚缓存
异常:System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-mem
crontab定时清除FastDFS图片
windos修改hosts文件
hue配置ldap
系统设计system design答题模板
518. Coin Change 2 方案总数
503. Next Greater Element II 首尾可循环
热门文章
265. Paint House II 房屋涂不同颜色的油漆
所有行的最小公共元素 1198. Find Smallest Common Element in All Rows
done 微软中国 居然还有查不出来的原题 560. Subarray Sum Equals K
done apple下班疲惫面试 不让我把话说完
done 沃尔玛 考点有点偏
todo 高盛测试工 电话
高盛面经 HashMap建图<left, right>,让sort segment首尾相接
使用模版字符串写DOM
Lodash常用的api:
table表格中有下拉选项和输入框时,每一行都需要校验
Copyright © 2020-2023
润新知
很多时候会看到,使用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());
}