Pergunta

Eu estou em uma situação onde é necessário apresentar uma árvore.No entanto, alguns de nós têm 35000 nós filho (direto de criança!).Isso, claro, é a maneira lenta em termos de usabilidade.

Eu prefiro ver a árvore que carrega apenas os nós que são visíveis no navegador do visor.

Tais árvores, existem para WinForms e C++, faz qualquer você sabe se uma árvore de existir para ASP.NET?

Atualmente estamos usando o Telerik Treeview, que é uma linda controle, mas não suporta a situação descrita.

perguntas adicionais

A partir de um ponto de vista usabilidade:como você lida com essas árvores.Exibindo 35000 nós, em um nível, é bom, mas como você a encontrar algo em que árvore?Você usa paginação em uma árvore?ou uma caixa de busca?ou talvez adicionar extra níveis?

Foi útil?

Solução

Com que muitos de nós, mesmo se você pode encontrar uma performance maneira de apresentá-los, é provável que não vai ser muito útil por seus usuários.Imagine tentar percorrer de 35.000 nós, apenas para encontrar o nó em que você está interessado!O mesmo vale para a paginação.É um usuário realmente indo para a página de 3500 páginas (supondo-se um tamanho de página 10) para localizar seu alvo?Provavelmente não, e se o fizerem, eles provavelmente não vai ser muito feliz.:)

Em vez disso, com grandes conjuntos de dados como este, acho que é normalmente o melhor é prestar algum tipo de "Filtro" da INTERFACE do usuário.Algo que permite que o usuário para "moldar" os dados disponíveis para um mais gerenciável coleção.

Eu não tenho certeza do que capacidade você tem de fornecer a filtragem (i.e.quais campos você pode filtrar), mas eu acho que é a sua melhor aposta.Opções para a INTERFACE do usuário são:

  1. Algo como RadGrid para ASP.NET AJAX, que pode fornecer um built-in de filtragem de INTERFACE de usuário que permite que os usuários rapidamente encontrar os valores que estão interessados.
  2. Usando o RadTreeView da API do lado do cliente e suporte para carregamento de nós sob demanda, você pode criar uma caixa de texto que iria filtro de nós na árvore de como os tipos de usuário.Você simplesmente lidar com a caixa de Texto do evento onkeyup e, em seguida, acionar uma solicitação para um serviço da web para pegar os nós que correspondem aos critérios de filtro, e substituir o seu TreeView do nó coleção com o resultado.Que vai torná-lo muito mais fácil para os usuários a encontrar o seu nó de destino.

Claramente, existem outras abordagens, também, mas espero que este dá-lhe algumas ideias.

Resposta Curta: Para conjuntos de dados grandes, eu uso uma combinação de filtragem em tempo real e serviços web para apresentar mais fácil conjunto de resultados para o meu blog.Para a carga inicial, eu só carregar a primeira (vamos dizer) 200 nós para manter um desempenho de alta.

Espero que isso ajude!-Todd

Outras dicas

Eu sei que existem alguns controles de árvore alimentados por jQuery. Não sei os nomes fora da mão. O controle da árvore ASP.NET definitivamente não suporta isso, pois não é Ajaxificável. Para a exibição de 35000 nós, eu os pagaria assim.

node
|
-- Sub Node 1
|
-- ...
|
-- Sub Node n
|
-- more...

Quando você passa mais ou clica nele, ele obterá mais nós. Se você estiver exibindo 100 submos, eu carregaria 200 e ocultaria o outro 100. Dessa forma, quando você passa o mouse mais, ele parece interante. E toda vez que você passa mais ... os próximos 100 ocultos são carregados.

Além disso, não é tão difícil criar controles de árvore personalizados hoje em dia com todos os navegadores de nível superior, use <ul> e <li> aninhado para criar nós e submesim e depois aplicar o estilo apropriado. o <li> pode ter links neles, se você quiser facilitar o clique.

Meus dois centavos.

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