第一段Html代碼塊
若控件的“DynamicLoadChildNodes”屬性值為true,也就是控件運行在客戶端動態加載子節點,則輸出支持客戶端動態加載子節點的Html代碼,首先輸出一個名為“SkyTreeVIEwControlTempXML”的XML數據島標簽,並將它的 “onreadystatechange“事件綁定到”SkyTreeVIEwControlDynamicLoadChildNodes”的 Javascript函數上。這裡還定義了一個名稱為“SkyTreeVIEwControlDyanmicRootNodeID”的全局變量,用於指明是哪個節點正在加載在節點。這裡輸出的Html代碼內容為
<!--
定義一個XML數據島標簽
當動態加載子節點時使用該XML數據島來加載定義子節點的XML文檔,
XML數據島是IE特有技術,其他浏覽器可能不支持。
-->
<xml id='SkyTreeVIEwControlTempXML'
onreadystatechange='SkyTreeVIEwControlDynamicLoadChildNodes()' ></XML>
<script language=Javascript>
//--------- 開始定義動態加載子節點使用的Javascript 代碼---------------------
// 當前動態加載子節點的根節點對象編號
var SkyTreeVIEwControlDyanmicRootNodeID ;
// 動態加載子節點
function SkyTreeVIEwControlDynamicLoadChildNodes()
{
// 獲得加載子節點定義數據的XML數據島對象
var xml = document.getElementById( 'SkyTreeVIEwControlTempXML' );
if( XML == null )
{
return ;
}
if( XML.readyState != 'complete' )
{ // 此時說明XML數據島正處於工作狀態,取消當前操作
return ;
}
// 獲得當前正在處理的樹狀列表節點對象
var RootNode = document.getElementById( SkyTreeVIEwControlDyanmicRootNodeID + '_text' );
if( RootNode == null)
return ;
var Html = '';
var errorflag = false;
// 獲得包含XSLT代碼的XML數據島對象
var xsl = document.getElementById( 'SkyTreeVIEwControlXSLT');
if( xsl == null )
{
// 未找到XSLT文檔則設置錯誤信息
Html = '缺失XSLT數據';
errorflag = true ;
}
else if( xml.XMLDocument.parseError.errorCode != 0)
{
// 若加載定義子節點的XML文檔錯誤則設置錯誤信息
Html = '錯誤:' + xml.XMLDocument.parseError.reason
+ '[' + xml.XMLDocument.parseError.url + ']' ;
errorflag = true ;
}
else
{
if( xml.XMLDocument.documentElement == null )
{
Html = '未找到根節點';
errorflag = true ;
}
else
{
// 將當前節點的Html標簽的編號保存到XML文檔中。
xml.XMLDocument.documentElement.setAttribute(
'RootID' ,
SkyTreeVIEwControlDyanmicRootNodeID );
// 執行XSLT轉換,生成用於顯示子列表的Html字符串
Html = xml.XMLDocument.transformNode( xsl.XMLDocument );
}
}
// 將當前節點的“正在加載”的字樣刪掉
var lbl = document.getElementById( SkyTreeVIEwControlDyanmicRootNodeID +'_Loading');
if( lbl != null )
{
if( errorflag )
{
lbl.innerHTML = '<br />' + Html ;
return ;
}
// 將動態生成的HTML代碼輸出到Html頁面中
lbl.insertAdjacentHTML('afterEnd', Html );
lbl.parentNode.removeChild( lbl );
}
else
{
// 將動態生成的HTML代碼輸出到Html頁面中
RootNode.insertAdjacentHTML('afterEnd', Html );
}
// 獲得節點的展開點圖片對象
var myExpend = document.getElementById( SkyTreeVIEwControlDyanmicRootNodeID + '_expend');
// 獲得節點的圖標圖片對象
var myIcon = document.getElementById( SkyTreeVIEwControlDyanmicRootNodeID + '_icon');
// 獲得節點的文本對象
var myText = document.getElementById( SkyTreeVIEwControlDyanmicRootNodeID + '_text');
// 獲得子節點表格
var myTable = document.getElementById( SkyTreeVIEwControlDyanmicRootNodeID + '_table');
if( myExpend != null
&& myIcon != null
&& myText != 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 );
//myTable.scrollIntoVIEw( false );
}
SkyTreeVIEwControlDyanmicRootNodeID = null;
}//function SkyTreeVIEwControlDynamicLoadChildNodes()
//-------- 本段Javascript 定義結束--------------------------
< /script>