ASP.NET1.1下TreeView海量数据绑定

如何实现将上万条数据绑定到微软的TreeView控件上.?下面给出一个解决方法。很简单以便大家参考。
效果图

关于TreeView的基本用法详见我前面的几篇文章。
部分实现代码如下:
private void Page_Load(object sender, System.EventArgs e)
{        
evaluateRemotObj 
=(IEvaluate) Activator.GetObject(typeof(IEvaluate), System.Configuration.ConfigurationSettings.AppSettings["EvaluateRemoteObj"]);
if(!this.Page .IsPostBack )
{
TreeView1.DefaultStyle[
"font-size"= "10pt"
InitNavigationTree(TreeView1.Nodes,
"ABS100101");
}
}
private   void   InitNavigationTree(TreeNodeCollection   tncCurrent,string   sParentID)   
        {               
            DataView   dvw   
=   new   DataView();   
            TreeNode   nodTemp;   
            
string   strTempID;               
            DataSet ds
=evaluateRemotObj.GetSubordinatesEmployee(sParentID);
            dvw.Table   
=   ds.Tables[0];   
            
foreach(DataRowView   drv   in   dvw)   
            {   
                nodTemp   
=   new   TreeNode();   
                nodTemp.ID   
=   drv["EmployeeNumber"].ToString();   
                nodTemp.Text   
=   drv["name"].ToString();   
                nodTemp.ImageUrl   
= "../images/icon_person1.gif";  
                nodTemp.Target   
=   "personForm";   
                nodTemp.NavigateUrl 
="../Common/EvaluationGrid.aspx?EmployeeNumber="+drv["EmployeeNumber"].ToString();  
                tncCurrent.Add(nodTemp);   
                strTempID   
=   drv["EmployeeNumber"].ToString();   
                InitNavigationTree(nodTemp.Nodes,nodTemp.ID);   
            }   
        }

posted on 2006-07-25 14:33 kim 阅读(2481) 评论(16)  编辑 收藏 网摘 所属分类: Asp.net开发

评论

#1楼 2006-07-25 14:53 Ring      

这种当然也是一种解决方案。
但这种方案不好!一次把海量的所有数据都读出来性能太差。宜采用先显示第一层,当点击某个接点时,再把该接点下的数据显示出来!!
  回复  引用  查看    

#2楼[楼主] 2006-07-25 15:04 kim      

@Ring
恩你说的对
我看了哈梅花雨那个控件它是一次将数据绑定,异步显示。就像CSDN论坛用的那个效果。
  回复  引用  查看    

#3楼 2006-07-25 16:58 深夜醉猫      

@Ring
说的对!!
但是多少的记录应该采用ring说的方法!
不知道谁可以说说这个度!我指的是企业级的开发!
  回复  引用  查看    

#4楼 2006-07-25 17:57 yukeelau[未注册用户]

在使用TREEVIEW控件时,如果结点比较多,还是在客户端使用AJAX技术异步加载好些。(1.1的树支持在客户端添加、删除、修改树结点,但2.0的树好像在客户端不支持了,不知道是不是我没有弄对。)   回复  引用    

#5楼 2006-07-25 18:00 minbear      

你这种方式对数据库压力太大,递归中不适合进行过多的实例化和数据库直接访问,建议缓存数据.   回复  引用  查看    

#6楼 2006-07-25 18:40 losingrose      

如果使用AJAX技术为什么不用CallBack控件,而要自己写方法来实现呢?   回复  引用  查看    

#7楼 2006-07-25 18:51 Ring      

@深夜醉猫
无法具体衡量到底多少条记录才用我的说法.10万?100万?还是更多,无法确定!!
这个跟服务器的性能以及有多少客户端访问等诸多因素有关.


@minbear 采用缓存是提高性能的另外一个方面, 用这样或那样的方法都可以使用缓存数据.
  回复  引用  查看    

#8楼[楼主] 2006-07-25 19:16 kim      

@Ring
其实做得好的还是要数梅花雨的TreeView,做的确实实在.
其实根据具体环境不同,采用的实现方式也就不同了.
  回复  引用  查看    

#9楼 2006-07-25 19:18 极地银狐.NET      

在这种情况下当然要用AJAX啦,
用Ajax技术让IE Web Control Tree View实现大数据量读取
http://dingsea.cnblogs.com/archive/2005/10/26/262220.aspx">http://dingsea.cnblogs.com/archive/2005/10/26/262220.aspx
2W条数据,没有时间问题.
  回复  引用  查看    

#10楼[楼主] 2006-07-25 19:29 kim      

@极地银狐.NET
你又来打广告拉??:)
  回复  引用  查看    

#11楼 2006-07-25 22:29 smkcuf[未注册用户]

web树异步加载是一个必须的功能。
所以asp.net 2.0的树就引入了部分这种ajax的技术。
  回复  引用    

#12楼 2006-07-31 13:07 sundart[未注册用户]

参考asp.net 2.0下的TreeView,很多问题都已解决了   回复  引用    

#13楼 2006-08-05 11:13 灵石      

怎么都不好
一次性取,第一次有点慢,但控件postback可设为false,点击的时候执行页面链接,在ifame打开窗口或是执行javascript,不用到服务端去postback一次

分层次取,控件postback就要设为true,每点一下节点,页面就要白一下(页面提交到服务器),而且控件重新再构造一次,总的算下来,开销多了重复的节点数据传输+页面传输,很不划算。

所以,我建议TreeView控件不要开启postback,采用一次性取数据构造,最好在需求上避免这种上万数据的情况。

  回复  引用  查看    

#14楼 2006-12-26 10:39 Suntears[匿名][未注册用户]

可以也给我一个副本么?谢谢
邮箱: suntears@qq.com
  回复  引用    

#15楼 2007-11-15 16:28 游客[未注册用户]

赶快把这低级的文章删除掉,误导别人   回复  引用    

#16楼 2008-04-02 23:45 北京诺软科技有限公司[未注册用户]

在remoting/web services方式访问数据层时,这种方式确实是有效。可以减少remote访问交互的次数   回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 459249




相关文章:

相关链接:

导航

统计

公告

中文: 罗江华
英文: KIM
职务: PL
工作地: 成都/新加坡/美国
MSN: ljhkim6@hotmail.com

---------------------------

我的微软MVP配置
我写/翻译的书



俱乐部:[cdproclub@gmail.com]
网站:http://www.cdpro.com.cn

与我联系

搜索

 

常用链接

留言簿

我参与的团队

随笔分类(202)

随笔档案(159)

文章分类(4)

文章档案(11)

相册

收藏夹(8)

创业

技术网站

我的好友

最新评论