本文示例源代码或素材下载
最近公司站点
出现了访问速度变慢,经过查看是在构造树的流程
CPU耗用严重,疑问
原由
是构造树的流程
采用了递归要领
一次性构造的树的所有节点,其实后台获取数据的速度倒是很快,比较慢的地点
就是Treeview构造每个节点的流程
。由于原来的程序采用的是vs2003,Treeview还不支持异步加载,ajax控件也没有合适的版本,一般是对2.0的,所以无奈之下只好,找了一个ajax的动态链接库dll文件,实现了逐级加载节点。现在把整个流程
总结一下,希望对维护vs2003程序的朋友们有所帮助。
第一步:引入ajax的dll文件(放在文章后面的附件里)
第二步:修改web.config配置文件
<system.web>
<!-- by dingsea -->
<httpHandlers>
<!--添加
的内容-->
<add verb="POST,GET" path="ajax/*.ashx" type="BorgWorX.Web.Core.Ajax.PageHandlerFactory, BorgWorX.Web.Core.Ajax" />
</httpHandlers>
第三步:在page_load中注册ajax
private void Page_Load(object sender, EventArgs e)
{
//注册ajax页面或用户控件
BorgWorX.Web.Core.Ajax.Utility.RegisterTypeForAjax(typeof(DownPara));
// 在此处放置用户代码以原始化页面
if(!IsPostBack)
{
TreeViewDataBind();
}
}
第四部:编写后台要领
//编写Ajax要领
,中括号的内容是必须的
[BorgWorX.Web.Core.Ajax.AjaxMethod()]
public System.Data.DataSet getNodeList(string parentNode){
System.Data.DataTable tab = new System.Data.DataTable();
tab.Columns.Add("NodeData");
tab.Columns.Add("Text");
tab.Columns.Add("ImgUrl");
tab.Columns.Add("IsLeaf");
tab.Columns.Add("NavigateUrl");
System.Data.DataSet ds= new System.Data.DataSet();
IList nodeList = ServiceSysHelper.GetParaSortOrParaInfo(parentNode,"02");//获取节点
if(nodeList==null nodeList.Count==0)
return null;
foreach(SoftWarePara para in nodeList)
{
System.Data.DataRow row = tab.NewRow();
row["NodeData"] = para.SoftwareParaId;
row["Text"] =para.SoftwareParaName;
tab.Rows.Add(row);
}
ds.Tables.Add(tab);
return ds;
}