WEB开发网
开发学院软件开发C语言 C#发现之旅 - 高性能ASP.NET树状列表控件(中) 阅读

C#发现之旅 - 高性能ASP.NET树状列表控件(中)

 2010-09-30 21:03:16 来源:WEB开发网   
核心提示: 在这里程序会判断控件的GenerateAtServer和DynamicLoadChildNodes 的属性值,若WEB控件不是在服务器端生成HTML代码或者允许在客户端动态加载子列表就会输出第二段HTML代码,C#发现之旅 - 高性能ASP.NET树状列表控件(中)(3),在输出第二段HTML代

在这里程序会判断控件的GenerateAtServer和DynamicLoadChildNodes 的属性值,若WEB控件不是在服务器端生成HTML代码或者允许在客户端动态加载子列表就会输出第二段HTML代码。

在输出第二段HTML代码时,首先会输出一个名为“SkyTreeViewControlXSLT”的XML数据岛元素,该数据岛内容来自函数 “ReadXSLTString”,该函数就是简单的从一个名为“SkyTreeViewControl.xslt”的嵌入式程序集资源中读取所有的文本内容。

此处还输出一个为“RefreshSkyTreeViewControl”的JavaScript函数,用于初始化一个树状列表,其参数就是树状列表的编号。也就是“myTreeView”,“myTreeView2”之类的控件客户端编号。在JavaScript函数中,首先获得第三个XML数据岛,获得树状节点定义信息XML文档,然后和“SkyTreeViewControlXSLT”数据岛中的XSLT文档执行XSLT转换,生成HTML字符串,然后调用HTML元素的“innerHTML”属性向HTML文档填充刚刚生成的HTML代码,从而展现出一个树状结构。

本过程配套使用的“ReadXSLTString”函数的代码为

private static string strXSLString = null;
/// <summary>
/// 从程序集资源文件SkyTreeViewControl.xslt中加载XSLT代码。
/// </summary>
/// <returns>加载的XSLT代码字符串</returns>
private string ReadXSLTString()
{
    if (strXSLString == null)
    {
        foreach (string name in this.GetType().Assembly.GetManifestResourceNames())
        {
            // 查询程序集中所有的嵌入的资源的名称,找到以"SkyTreeViewControl.xslt"
            // 结尾的程序集资源并以UTF8的文本编码格式加载其中的文本内容。
            // 程序集资源的全名为“程序集默认名称空间.保存文件的各级目录.文件名”
            // 其中文件名中不能出现下划线。
            if (name.EndsWith(".SkyTreeViewControl.xslt"))
            {
                using (System.IO.Stream stream =
                    this.GetType().Assembly.GetManifestResourceStream(name))
                {
                    System.IO.StreamReader reader = new System.IO.StreamReader(
                        stream,
                        System.Text.Encoding.UTF8);
                    strXSLString = reader.ReadToEnd();
                }
                return strXSLString;
            }
        }
        throw new Exception("未找到程序集资源SkyTreeViewControl.xslt");
    }
    return strXSLString;
}

上一页  1 2 3 4 5 6 7 8  下一页

Tags:发现 之旅 高性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接