Como configurar o foco para um TreeView ASP.NET

 

As pessoas têm tido problemas com o uso do controle TreeView para o ASP.NET:

Microsoft.Web.UI.WebControls.TreeView

Este controle pode ser descarregado gratuitamente do Web site da Microsoft. Este artigo faz uma avaliação do controle web gratuito (não suportado pela MS).

 

Neste artigo abordaremos questões de foco para este controle. Escolhemos este assunto, pois não achamos muita informação a respeito, após várias buscas minuciosas em sites. Basicamente, explicaremos os dois problemas principais: fazer com que um controle TreeView adquira o foco e configurar corretamente as cores para os itens selecionados e quando o ponteiro do mouse passa por cima de um item.

Informações fundamentais

A seguir, veremos os problemas que surgem, ao tentarmos configurar o foco do controle TreeView Microsoft ASP.NET:

Embora coloquemos o TreeView dentro de um formulário, teremos que usar o objeto documento em vez do objeto formulário para configurar o foco.

Este é o código final:

 

Private Sub focusTreeview()

  Dim strBuilder As StringBuilder = New StringBuilder()

  strBuilder.Append(" ")

  strBuilder.Append("document.getElementById('TreeView1').focus();")

  

  'a linha a seguir nao faz nada

  'strBuilder.Append("document.getElementById('TreeView1').select();")

  strBuilder.Append(" ")

  RegisterStartupScript("FocusTreeview", strBuilder.ToString)

End Sub

 

Depois que usarmos o código acima, o TreeView será selecionado na carga do formulário e o usuário poderá selecionar corretamente qualquer item do TreeView. Uma vez que usarmos o método de foco do documento, as cores permanecem em modo "light" independentemente do que fizermos, porém, o TreeView será selecionado corretamente.

A declaração "select" não tem efeito no TreeView. Portanto se descomentarmos a linha acima, não terá nenhum efeito para o mesmo.

Para que as cores não fiquem em modo "light", devemos usar o atributo Filter Style no SelectedStyle e HoverStyle como abaixo:

 

 

Nota

O filter=none tem que vir antes das outras palavras chave do estilo, caso contrário obteremos apenas uma cor cinzenta. Devemos adicionar Imports System.Text no topo do código para usar o objeto StringBuilder. As características descritas neste artigo, se aplicam somente ao MS Internet Explorer 6.x.