请问怎么样加载树 防止页面假死 高分求救 100分

l274747948 2015-08-17 02:05:24

//添加节点
private delegate void UpdateTreeNodeUI(TreeNode parentNode, TreeNode Node);

private void UpdateTreeNodeUI_Node(TreeNode parentNode, TreeNode Node)
{
parentNode.Nodes.Add(Node);
}

//绑定树的方法
TreeNode node = new TreeNode();
node.Name ="";

if (this.InvokeRequired)
{
UpdateTreeNodeUI ur = new UpdateTreeNodeUI(UpdateTreeNodeUI_Node);
this.Invoke(ur, parent,node);
}



数据库大概有几千条数据 加载时候有假死现象
现在要解决这个问题

也做过惰性加载 解决假死现象

但还有个反向对比绑定的一个功能

所以还是要都加载到树上 请问有什么办法解决吗




...全文
245 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
l274747948 2015-08-31
  • 打赏
  • 举报
回复
感谢各位 问题解决了 我用的是C# 窗口 慢的问题是因为我在主窗口调用自定义控件的加载数据 如果我在自定义控件直接加载数据就会快 当然解决了目前 几千条数据的问题 加载几千条是没有问题的~!
吉普赛的歌 2015-08-18
  • 打赏
  • 举报
回复
说明一下: 1. 让 .net 控件的 TreeView 滚蛋吧!几千条数据真的不算什么, 只是这个TreeView在搞鬼! 2. 用 zTree , 这是 jQuery 树中最好的, 没有之一。 地址:http://www.ztree.me/v3/demo.php#_101 3. zTree中的树花样繁多, 绝对可以满足你的需求。如果你的数据太大, 还可以用上异步加载。
仰望那天空 2015-08-18
  • 打赏
  • 举报
回复
从两方面分析: 1、从数据库来说,几千上万条查询应该一秒不到,所以不影响 2、那么从程序上看,就是输出的问题影响到加载速度。(这就涉及到两方面:数据表库设计、程序代码编写) 解决办法: 推荐用js加载这些数据,比如js插件:dtree 或者其它的jquery插件来实现 适当调整表设计以适应这些插件的快速读取
老李家的小二 2015-08-18
  • 打赏
  • 举报
回复
先加载根目录和一级目录,其他目录点击后再加载
_lee_chong 2015-08-18
  • 打赏
  • 举报
回复
撇开那些优化不说,涉及你的实际情况,不好细致的讨论,通常如果ui线程非要做这些占用cpu的处理为了提高用户体验,可添加一个等待处理的窗口,来阻塞用户对界面的操作;
  • 打赏
  • 举报
回复
如果你不能很好地分层,可能你想什么数据库表数据都想“一次就拿到”前端内存里来。这其实就不是你这个帖子的问题范围了,就是一个整体的涉及分层、业务、性能、体验方面的设计思想比较容易出现任性状况的问题了。
  • 打赏
  • 举报
回复
如果非要一次加载创建很多节点,那么使用 SuspendLayout、ResumeLayout 防止界面额外刷新。 不过如果数据量确实是不可控的,那么最好不要找什么“反向对比绑定功能”的借口,业务的问题(例如某业务对比它自己的服务器端title)走业务服务,不要把什么后台业务都拿到前端UI上来。
本拉灯 2015-08-17
  • 打赏
  • 举报
回复
你可以让点击节点展开后,再加载子节点(下一级),然后子节点的子节点只有当鼠标点击后展开再加载。 就是有个ExpentBefore事件
crystal_lz 2015-08-17
  • 打赏
  • 举报
回复
TreeNode 确实是慢的要死。。。
  • 打赏
  • 举报
回复
只能异步加载了,点开节点时再动态加载子节点
huiyaosoft 2015-08-17
  • 打赏
  • 举报
回复
是Winform的还是asp.net的?如果频繁使用树的话可一次性从数据库中读取全部数据,如果不是的话,每次仅读取需要的数据。树如果包含ico图片,请注意ico图片的加载方法,避免不必要的加载。如果是Web程序使用浏览器查看构造树时时间都花在哪里了。
Forty2 2015-08-17
  • 打赏
  • 举报
回复
只有几千条数据... 可以用后台线程先全部下载到本地。 然后再UI建树。

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧