- 注册时间
- 2012-12-26
- 最后登录
- 2021-9-29
- 阅读权限
- 10
- 积分
- 800
- 精华
- 0
- 帖子
- 87

|
之前询问过贵方服务人员,
建议我:
如果要保存住展开的样子,必须把那些节点展开的保存起来
监听下treegrid的onexpand事件,展开的时候,把e.node节点对象保存到一个全局变量中,或者cookie,这个随便你们
然后监听treegrid的onload事件,刷新的时候,进入这个事件,设置下treegrid.expandNode(node)展开的节点.
随后我便拦截了 Expand / Collapse 事件,记录下了相应ID。
//展开折叠记录
function onExpand(e) {
var record = e.node;
setCookie("Power.BusinessList." + "." + record.Id, "open");
delCookie("Power.BusinessList." + "." + record.Id); //删除cookie
}
//展开折叠记录
function onCollapse(e) {
var record = e.node;
setCookie("Power.BusinessList." + "." + record.Id, "close");
}
但没有在 onLoad()中处理。 因为onLoad 中,我无法获取到所有需要缩起来的 id.
改为在
function onDrawNode(e) {
var node = e.node;
var isClose = getCookie("Power.BusinessList." + "." + node.ModuleID);
e.node.expanded = !(isClose == "close");
}
但效果并不理想:
1. 缩起来符合预期,点击后立即记录到cookie ,屏幕上也立即缩起来了。
2. 展开则需要点击两次,第一次铁定没反应。
究其原因,是展开时, 先触发了 onDrawNode ,再触发了 onExpand ,以至第一次点击无效。
//-----------------------------------------------------------------------------------------------
如果要在 onLoad 中,缩起部分节点
则 onCollapse(e) 中,必须遍历整颗树,找到所有被缩的节点,存入 cookie ,再 onLoad 反解析,运行效率大打折扣
请问有没有更好的方案?
|
|