Fazendo uma barra de rolagem ir para o recorde selecionado no TreeView Asp.net
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"