C#发现之旅 - 高性能ASP.NET树状列表控件(中)
2010-09-30 21:03:16 来源:WEB开发网若不是在服务器端生成HTML代码,那就是在客户端生成代码了,于是程序输出一个XML数据岛的HTML代码,该数据岛的内容就是节点XML文档的内容。实现这个功能的C#代码为
// 若在客户端动态生成HTML代码则将数据XML字符串输出到ASPX页面中
writer.Write("<span id='" + this.ClientID + "_container' >正在加载,请稍候</span>");
// 将数据XML字符串输出到ASPX页面中的一个XML数据岛中
writer.Write("<xml id='" + this.ClientID + "_xml'>" + xml + "</xml>");
// 输出将要初始化树状列表的JavaScript函数
this.Page.ClientScript.RegisterStartupScript(
this.GetType() ,
"SkyTreeViewControL_Init_" + this.ClientID , @"
<script language=javascript>
RefreshSkyTreeViewControl( '" + this.ClientID + @"' );
</script>
");
这里调用了RegisterStartupScript函数,使得HTML页面加载时立即调用名为 RefreshSkeyTreeViewControl 的JavaScript函数来初始化这个树状列表,本控件输出的第二段HTML代码就包含了该JavaScript函数。
操作数据视图
本WEB控件还在数据视图中保存数据,其功能代码为
/// <summary>
/// 保存数据视图状态
/// </summary>
/// <returns>操作结果</returns>
protected override object SaveViewState()
{
this.ViewState["nodes"] = this.myNodes ;
return base.SaveViewState ();
}
/// <summary>
/// 加载数据视图状态
/// </summary>
/// <param name="savedState">操作结果</param>
protected override void LoadViewState(object savedState)
{
myNodes = this.ViewState["nodes"] as SkyTreeNodeList ;
base.LoadViewState (savedState);
}
更多精彩
赞助商链接