ノードアイコンが存在する場合、ASP.Net TreeView Expand / Collapse Allは機能しません。
-
08-07-2019 - |
質問
次のjsコードを使用して、ASP.Net TreeViewコントロールのすべてのノードを展開/折りたたみます:
// handle tree - this doesn't seem to work when the tree contains node images
function TreeviewExpandCollapseAll(treeViewId, expandAll) {
var displayState = (expandAll == true ? "none" : "block");
var treeView = document.getElementById(treeViewId);
if (treeView) {
var treeLinks = treeView.getElementsByTagName("a");
var nodeCount = treeLinks.length;
alert(nodeCount);
for (i = 0; i < nodeCount; i++) {
if (treeLinks[i].firstChild.tagName) {
if (treeLinks[i].firstChild.tagName.toLowerCase() == "img") {
var currentToggleLink = treeLinks[i];
var childContainer = GetParentByTagName("table", currentToggleLink).nextSibling;
if (childContainer.style.display == displayState) {
eval(currentToggleLink.href);
}
}
}
} //for loop ends
}
}
//utility function to get the container of an element by tagname
function GetParentByTagName(parentTagName, childElementObj) {
var parent = childElementObj.parentNode;
while (parent.tagName.toLowerCase() != parentTagName.toLowerCase()) {
parent = parent.parentNode;
}
return parent;
}
問題は、 NodeStyle-ImageUrl =&quot; img / FolderSmall.gif&quot; がある場合、最初の子ノードを開いた後に展開が失敗することです。ノードイメージが存在する場合のみです。
JSエラーはchildContainerがnullです:
if (childContainer.style.display == displayState) {
eval(currentToggleLink.href);
他の誰かがこれに遭遇したと確信していますが、展開/折りたたみのために見つけたすべてのコードは同じ時点で失敗します。
解決
これはかなり前のことですが、正しく思い出せば、呼び出しでnullを返さないように1pxイメージプレースホルダーを含めました。
所属していません StackOverflow