C#发现之旅 - 高性能ASP.NET树状列表控件(下)
2010-09-30 21:03:02 来源:WEB开发网核心提示: 在这个模板中首先接受了一个名为Level的参数,该参数表示生成的树状列表的层次序号,C#发现之旅 - 高性能ASP.NET树状列表控件(下)(2),此处定义了一个名为“NodeID”的XSLT变量,将作为树状列表节点在HTML文档中的编号,此处定义了“HasC
在这个模板中首先接受了一个名为Level的参数,该参数表示生成的树状列表的层次序号。
此处定义了一个名为“NodeID”的XSLT变量,将作为树状列表节点在HTML文档中的编号。
这里使用了XSLT函数generate-id,该函数属于创建一个惟一的编号。对相同的XML节点调用generate-id函数会得到相同的结果,对不同的XML节点调用该函数一定会得到不同的编号。注意,这里的编号在同一个XML文档中是惟一的,但对多个XML文档则不一定了。若对两个XML 文档中的XML节点调用该函数是有可能得到相同的编号。因此当同一个页面上有多个WEB控件,或者WEB控件支持动态加载子节点时,整个页面会对多个 XML文档执行XSLT转换,从而导致多个节点对象可能使用一样的节点编号的情况。若多个节点的编号一样会导致树状列表工作异常。这就是为什么在本演示程序中的“TreeViewNode.aspx”中使用“System.Guid.NewGuid”来手动的设置节点编号的原因。因为“NewGuid”函数会创建一个全球惟一编号,多次调用“NewGuid”函数而创建相同的编号的可能性基本上不存在,这从而保证了同一个页面中所有树状列表的节点编号的惟一性。
此处定义了名为“ShowChildNode”的XSLT变量。这里判断了Level参数值是否小于1,若小于1则参数值为1,表示初始化时该节点的子节点就显示出来。在这里可以控制树状列表初始化时显示多少层节点。
此处定义了“ChildCount”变量,用于存放子节点的个数,以后需要获得子节点个数时就用这个变量,避免重复计算。
此处定义了“HasChild”变量,用于判断是否有子节点,以后需要判断是否有子节点时就不需要重新计算了。
更多精彩
赞助商链接