ASP.Net TreeView Expand / Collapse Alle funktioniert nicht, wenn der Knoten Symbole vorhanden sind
-
08-07-2019 - |
Frage
Ich habe verwendet, um den folgenden js Code Aufklappen / Zuklappen alle Knoten ein ASP.Net TreeView-Steuerelement:
// 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;
}
Das Problem ist, dass, wenn ich NodeStyle-ImageUrl = „img / FolderSmall.gif“ , es ist die expandierende nicht nach dem ersten Kind-Knoten zu öffnen - nur wenn es Knoten Bilder vorhanden
Der JS Fehler ist childContainer ist null:
if (childContainer.style.display == displayState) {
eval(currentToggleLink.href);
Ich bin sicher, dass jemand anderes hat sich in diese laufen, aber der gesamte Code Ich habe Aufklappen / Zuklappen nicht an derselben Stelle gefunden.
Lösung
Das ist wirklich von einer Weile zurück, aber wenn ich mich recht erinnere, ich eingeschlossen einfach einen 1px Bild-Platzhalter, um auf allen Anrufen nicht null zurück.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow