none
Apanhando - Recursão p/ Montar Treeview

    Pergunta

  • Pessoal, meu problema é o seguinte...
    To apanhando pra montar uma recursão para criar uma treeview.

    Minha tabela:

    Coluna1   |    Coluna2    |    Coluna3    |    Coluna4    |    Coluna5
    ---------------------------------------------------------------------------
     Item1    |
    Item1.1       | Item1.1.1     | Item1.1.1.1   | Item1.1.1.1.1
     Item1    | Item1.1       | Item1.1.1     | Item1.1.1.1   | Item1.1.1.1.2
     Item1    | Item1.1       | Item1.1.1     | Item1.1.1.1   | Item1.1.1.1.3
     Item1    | Item1.1       | Item1.1.1     | Item1.1.1.2   | Item1.1.1.2.1
     Item1    | Item1.1       | Item1.1.1     | Item1.1.1.2   | Item1.1.1.2.2
     Item1    | Item1.1       | Item1.1.2     | Item1.1.1.3   | Item1.1.1.3.1
     Item1    | Item1.1       | Item1.1.2     | Item1.1.1.3   | Item1.1.1.3.2
     Item1    | Item1.2       | Item1.2.1     | Item1.2.1.1   | Item1.2.1.1.1
     Item1    | Item1.2       | Item1.2.2     | Item1.2.2.2   | Item1.2.2.2.1

     Item2    | Item2.1       | Item2.1.1     | Item2.1.1.1   | Item2.1.1.1.1
     Item2    | Item2.1       | Item2.1.1     | Item2.1.1.1   | Item2.1.1.1.2
     Item2    | Item2.1       | Item2.1.1     | Item2.1.1.2   | Item2.1.1.2.1
     Item2    | Item2.1       | Item2.1.1     | Item2.1.1.2   | Item2.1.1.2.2
     Item2    | Item2.1       | Item2.1.2     | Item2.1.2.1   | Item2.1.2.1.1
     Item2    | Item2.1       | Item2.1.2     | Item2.1.2.1   | Item2.1.2.1.2
     Item2    | Item2.2       | Item2.2.1     | Item2.2.1.1   | Item2.2.1.1.1
     Item2    | Item2.2       | Item2.2.1     | Item2.2.1.1   | Item2.2.1.1.2

    RESULTADO:

    + Item1
    |   + Item1.1
    |   |   + Item1.1.1
    |   |   |   + Item1.1.1.1
    |   |   |   |   +Item1.1.1.1.1
    |   |   |   |   +Item1.1.1.1.2
    |   |   |   |   +Item1.1.1.1.3
    |   |   |   |   |
    |   |   |   + Item1.1.1.2
    |   |   |   |   +Item1.1.1.2.1
    |   |   |   |   +Item1.1.1.2.2
    |   |   |   |   |
    |   |   + Item1.1.2
    |   |   |   + Item1.1.2.1
    |   |   |   |   +Item1.1.2.1.1
    |   |   |   |   +Item1.1.2.1.2
    |   |   |   |   |
    |   |   + Item1.1.2
    |   |   |   + Item1.1.2.1
    |   |   |   + Item1.1.2.2
    |   |   |   |   |
    |   + Item1.2   |
    |   |   + Item1.2.1
    |   |   |   + Item1.2.1.1
    |   |   |   |   +Item1.2.1.1.1
    |   |   |   |   |
    |   |   + Item1.2.2
    |   |   |   + Item1.2.2.1
    |   |   |   |   +Item1.2.2.1.1
    |   |   |   |   |
    + Item2 |   |   |

    |   + Item2.1   |
    |   |   + Item2.1.1
    |   |   |   + Item2.1.1.1
    |   |   |   |   +Item2.1.1.1.1
    |   |   |   |   +Item2.1.1.1.2
    |   |   |  
    + Item2.1.1.2
    |   |   |   |   +Item2.1.1.2.1
    |   |   |   |   +Item2.1.1.2.2
    |   |   + Item2.1.2
    |   |   |   + Item2.1.2.1
    |   |   |   |   +Item2.1.2.1.1
    |   |   |   |   +Item2.1.2.1.2
    |   + Item2.2   |
    |   |   + Item2.2.1
    |   |   |   + Item2.2.1.1
    |   |   |   |   +Item2.2.1.1.1
    |   |   |   |   +Item2.2.1.1.2

    To apanhando igual um cachorro sem dono.
    Cada linha da tabela é uma ramificação da TREEVIEW.
    Ja fiz uma recursão pra isso antes mais a tabela estava no formado de COLUNA ID e COLUNA ID_PAI.
    Mais dessa forma não estou conseguindo fazer de jeito nenhum.
    Se alguma alma bondosa puder me ajudar eu agradeço muito.

    []'s

    Henrique
    quarta-feira, 10 de outubro de 2007 18:53

Todas as Respostas

  • Eu fiz um exemplo com DataSet e XML, nao sei se é isso que voce precisa mas da uma olhadinha talvez lhe ajude

     

    http://cl1p.net/TreeNodeDataSetXML/

     

    quarta-feira, 10 de outubro de 2007 21:44
  •  

    Anselmo,

     

    Muito obrigado pela resposta.

    Concerteza ajudou muito. Não só ajudou como resolveu meu problema. 
    A sua sacada foi na Função:


     

    private TreeNode retornatreenode(string titulo, TreeNodeCollection no)

    {

    foreach (TreeNode node in no)

    {

    if (node.Text == titulo)

    return node;

    }

    return null;

    }

     

    O resto do algorito está muito semelhante ao que eu estava montando.

    Muito obrigado mesmo! Acho que iria apanhar uma semana pra pensar nessa solução.

    No meu caso eu ja tenho a query que monta essa tabela e carrega um DataTable, tornando bem mais simples podendo descartar a utilização de XML e de DataSet. Mas com certeza mais pra frente, em alguns projetos que tenho em vista essa montagem através de XML será muito útil.

     

    Muito obrigado novamente.

     

    Henrique.

    quinta-feira, 11 de outubro de 2007 12:28