C#发现之旅 - 高性能ASP.NET树状列表控件(中)
2010-09-30 21:03:16 来源:WEB开发网本函数中,程序会遍历程序集中所有的嵌入式的资源名称,若该名称以“.SkyTreeViewControl.xslt”结尾则以UTF8的编码格式读取该资源的文本内容。
第三段HTML代码块
WEB控件还会输出一个名为“SkyTreeViewControlExpendNodebyID”的JavaScript函数,该函数用于展开或收缩节点,而与之配套的定义了一个名为SkyTreeViewControlCurrentTreeNode的全局变量,用于保存当前高亮度显示的节点的编号。这段JavaScript代码为
// 定义树状列表的当前节点对象
var SkyTreeViewContrlCurrentTreeNode ;
//
//---------------- 展开指定编号的树状列表的节点---------------
// 参数strID 指明节点的ID号
// 参数bolSelect 指明是否高亮度显示这个树状列表节点
//
function SkyTreeViewContrlExpendNodeByID(strID , bolSelect )
{
// 获得节点的展开点图片对象
var myExpend = document.getElementById(strID + '_expend');
// 获得节点的图标图片对象
var myIcon = document.getElementById(strID + '_icon');
// 获得节点的文本对象
var myText = document.getElementById(strID + '_text');
// 获得子节点表格
var myTable = document.getElementById(strID + '_table');
if( myText == null )
return ;
if( bolSelect )
{
// 设置树状列表节点高亮度显示
if( SkyTreeViewContrlCurrentTreeNode != myText
&& SkyTreeViewContrlCurrentTreeNode != null)
{
SkyTreeViewContrlCurrentTreeNode.className = 'SkyTreeViewControl_TreeNode';
}
SkyTreeViewContrlCurrentTreeNode = myText;
SkyTreeViewContrlCurrentTreeNode.className = 'SkyTreeViewControl_SelectedNode';
}
// 展开或收缩子节点
if( myExpend != null
&& myIcon != null
&& myTable != null )
{
// 切换节点前面的展开或收缩样式的图标
var SrcBack = myIcon.src ;
myIcon.src = myIcon.getAttribute('SrcBack');
myIcon.setAttribute( 'SrcBack' , SrcBack );
// 切换节点前面的+ 或者- 样式的图标
SrcBack = myExpend.src ;
myExpend.src = myExpend.getAttribute('SrcBack');
myExpend.setAttribute( 'SrcBack' , SrcBack );
// 显示或隐藏包含子节点的表格对象
if( myTable.style.display != 'none' )
{
myTable.style.display='none';
}
else
{
myTable.style.display='';
}
}
var dyload = false;
if( myTable == null )
{
// 若不存在包含子节点的表格对象则尝试动态加载子节点
// 此时节点的XMLSource扩展属性就保存着定义子节点的XML文档URL地址。
var XMLSource = myText.getAttribute('XMLSource');
if( XMLSource != null && XMLSource.length > 0 )
{
// 若设置了该XML文档地址则删除XMLSource 扩展属性并
myText.removeAttribute('XMLSource');
var xml = document.getElementById( 'SkyTreeViewControlTempXML');
if( xml != null )
{
// 设置“正在加载”字样为显示状态
SkyTreeViewControlDyanmicRootNodeID = strID ;
var lbl = document.getElementById( SkyTreeViewControlDyanmicRootNodeID +'_Loading');
if( lbl != null )
{
lbl.style.display = '';
}
// 调用编号为SkyTreeViewControlTempXML 的XML数据岛来异步加载XML文档
xml.src = XMLSource ;
dyload = true ;
}
}
}
if( dyload == false )
{
//myText.scrollIntoView( false );
}
}//function SkyTreeViewContrlExpendNodeByID(strID)
更多精彩
赞助商链接