TreeView 伺服器控件客戶端 API 極少,無法直接呼叫全展開/摺疊或互斥展開。
WebResource.axd 腳本,第二個含 TreeView_ToggleNode。TreeView_ToggleNode(data, index, node, lineType, children) 為節點點擊核心邏輯。function TreeView_ToggleNode(data, index, node, lineType, children) {
var img = node.childNodes[0];
// ... 判斷 children.style.display 切換展開/摺疊狀態
// ... 更新 img.src、alt
data.expandState.value = data.expandState.value.substring(0, index) + newExpandState + data.expandState.value.slice(index + 1);
}
data.treeNodeList,統一設定 children.style.display 並更新 expandState。display=none、更新 expandState 為 'c'。.js 檔,ScriptManager 註冊或頁面直接引用。ExpandAll()/CollapseAll() 同步 expandState 隱藏欄位,確保 PostBack 狀態一致。此技巧展示如何在不修改組件原始碼前提下,透過腳本重寫擴展內建控件客戶端行為。