Fazendo uma barra de rolagem ir para o recorde selecionado no TreeView Asp.net

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

  •  23-09-2019
  •  | 
  •  

Pergunta

Eu tenho um controle de TreeView que é preenchido em tempo de execução com uma pirâmide de nomes de funcionários. Coloquei a barra de rolagem CSS na visualização colocando Overflow: Auto "na tag onde a View Treew está localizada. Os usuários agora estão me pedindo para que a barra de rolagem caia no TreeView onde um item de TreeView é selecionado.

Como faço para fazer uma barra de rolagem para ir a um lugar onde o TreeView foi selecionado?

Nota: TreeView1.SelectedNode.ensureVisible ();

não está disponível no ASP.net precisa de outra maneira.

Nenhuma solução correta

Outras dicas

Você precisará de algum JavaScript personalizado e algum código-behind. Comece usando o método JS encontrado aqui Para obter o ID do cliente de um Treenode:

function GetTreeNodeID(nodeTooltip)
{
    var tree = document.getElementById(TreeView.ClientID); // Change TreeView ClientID.
    var treeLink =  tree.getElementsByTagName('A');    

    for(var element in treeLink)
        if((nodeTooltip == treeLink[element].title) && (treeLink[element].title != ""))                      
            return treeLink[element].id;
}

Então, em seu código-behind, você pode registrar um script de inicialização para rolar sua div até o Treenode usando o scrollIntoView() Método JavaScript:

Dim script As String = String.Format("var treeNode = GetTreeNodeID('{0}');  treeNode.scrollIntoView();", myTreeNode.Tooltip)
Page.ClientScript.RegisterStartupScript("scrollScript", script)

O JavaScript seguinte deve ajudar:

var selected = document.getElementById(node_id);
if (selected) {
   selected.scrollIntoView(true);
}

Se a seleção do nó acionaria um postback, tente:

<%@ Page Title="" Language="C#" MaintainScrollPositionOnPostback="true"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top