手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

.net延迟加载的一般实现

来源:互联网 作者:west263.com 时间:2008-02-22
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

本文对延迟加载在常用控件的实现做简单的描述。

一、在界面第一次显示时加载
最简单的延迟加载可以通过控件第一次显示时加载数据,例如你有很多的页签,只有用户切换到这个页签时,才会加载数据。
在.NET的Control中提供SetVisibleCore虚方法,当检测value是true且第一次调用此方法时,调用延迟加载。但是我并不推荐这个方法,因为你有更好的地方。
- 如果你的控件继承自Form或者UserControl,建议重载OnLoad;
- 如果继承自Control,可以重载OnCreateControl。
下面是延迟加载数据的例子:
public class MyTabPage : TabPage {
protected override void OnCreateControl() {
base.OnCreateControl();

string oldText = this.Text;
this.Text = "Loading..";

//TODO:在这里调用加载数据的方法

this.Text = oldText;
}
}
二、树控件在第一次展开时加载
TreeView因为所有的节点并不是继承自Control,所以不能使用上面的方式,但是TreeView提供了OnBeforeExpand虚方法,最简单的办法是在你打算实现延迟加载的节点加入一个是否已经加载的标记,当第一次展开时,检测这个标记。
必须记住你的延迟加载节点在根位置是不能收到这个事件的。

三、在表格中延迟加载。
在Windows程序中,有的使用分页的方式实现延迟加载,但这种方式的用户体验非常的糟糕。如果你希望仍然使用滚动条的话,可以自己实现IBindList接口,内部持有一个数据的ID列表,在表格询问数据时,才到数据库加载数据,通常的表格控件都能够很好的工作。
但这里有个应该注意的地方,例如用户按下PageDown时,表格控件连续的调用获取数据方法,如果每次请求都去调用数据库,将会很低的性能,应该让你的程序“预知”到可能要读下50笔数据了,所以一次性多读50条就可以。
这种方法遇到表格排序的时候就没有办法了。

以上是延迟加载技术的一般技术,如果你有更好的方法,请指教。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!