ASP.Net TreeView Expandir / Fechar tudo não funciona quando os ícones de nó estão presentes

StackOverflow https://stackoverflow.com/questions/1639258

Pergunta

Eu usei a seguinte js código para expandir / recolher todos os nós de um controle 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;
} 

O problema é que quando eu tiver NodeStyle-ImageUrl = "img / FolderSmall.gif" , que a expansão falhar após a abertura do primeiro nó filho - apenas quando há imagens nó presente

O erro JS é childContainer é nulo:

                    if (childContainer.style.display == displayState) {
                        eval(currentToggleLink.href);

Eu tenho certeza que alguém tenha executar para esse, mas todo o código que eu encontrei para expandir / recolher falhar no mesmo ponto.

Foi útil?

Solução

Este é realmente de um tempo atrás, mas se bem me lembro, eu simplesmente incluído um espaço reservado imagem 1px, a fim de não retornar nulo em todas as chamadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top