none
Preencher Treeview RRS feed

  • Pergunta

  • Possuo uma treeview que vai possuir 4 level (Permissao1,Permissao2,Permissao3,Permissao4) sendo cada um desse uma tabela do banco..

    Para preencher o nivel 1 e 2 usei o seguinte codigo:

    //Carrega os 4 niveis de permissões    
         DataTable DtPermissao1 = grupo.Permissao1();
         DataTable DtPermissao2 = grupo.Permissao2();
         DataTable DtPermissao3 = grupo.Permissao3();
         DataTable DtPermissao4 = grupo.Permissao4();
    
         //TreeView Permissao1 
         foreach (DataRow dataRowPermi1 in DtPermissao1.Rows)
         {
          if (!treeViewPermissao.Nodes.Contains(treeViewPermissao.Nodes[dataRowPermi1["CODPERMISSAO"].ToString()]))
          {
           treeViewPermissao.Nodes.Add(dataRowPermi1["CODPERMISSAO"].ToString(), dataRowPermi1["CODPERMISSAO"].ToString() + " – " + dataRowPermi1["DESCRICAO1"].ToString());
    
          }
         }
         foreach (DataRow dataRowPermi2 in DtPermissao2.Rows)
         {
          //NÓS DO TREEVIEW - ADICIONA NÓ PERMISSAO2
          foreach (TreeNode TreeNode2 in treeViewPermissao.Nodes)
          {
           if (!TreeNode2.Nodes.Contains(TreeNode2.Nodes[dataRowPermi2["CODPERMI2"].ToString()]))
           {
            if (TreeNode2.Name == dataRowPermi2["CODPERMISSAO"].ToString())
            {
             TreeNode2.Nodes.Add(dataRowPermi2["CODPERMI2"].ToString(), dataRowPermi2["CODPERMI2"].ToString() + " – " + dataRowPermi2["DESCRICAO2"].ToString());
            }
           }
          }
         }
    
    
    Mas o problema esta para preencher o level 3 e 4 não consigo..tentei utiliza um codigo parecido mais naum dah certo..c alguem puder m ajudar agradeço e muito!!

    quinta-feira, 23 de setembro de 2010 11:33

Respostas

  • Galera valew pela ajuda axei alguns erros no codigo pq usava chave composta..Resolvie =)
    • Marcado como Resposta Renathu quinta-feira, 23 de setembro de 2010 13:12
    quinta-feira, 23 de setembro de 2010 13:11

Todas as Respostas

  • Ele retorna algum erro quando você tenta preencher o nivel 3?
    Elielson de Andrade elielson( a )gd.com.br www.despcompany.com www.emyface.com
    quinta-feira, 23 de setembro de 2010 11:43
  • nao, eu tento preencher assim :

    foreach (DataRow dataRowPermi3 in DtPermissao3.Rows)
              {
                //NÓS DO TREEVIEW - ADICIONA NÓ PERMISSAO3
                foreach (TreeNode TreeNode3 in treeViewPermissao.Nodes)
                {
                  if (!TreeNode3.Nodes.Contains(TreeNode3.Nodes[dataRowPermi3["CODPERMI3"].ToString()]))
                  {
                    if (TreeNode3.Name == dataRowPermi3["CODPERMI2"].ToString())
                    {
                      TreeNode3.Nodes.Add(dataRowPermi3["CODPERMI3"].ToString(), dataRowPermi3["CODPERMI3"].ToString() + " – " + dataRowPermi3["DESCRICAO3"].ToString());
                    }
                  }
                }
              }
    

    quinta-feira, 23 de setembro de 2010 11:48
  • segue algumas threads do forum com peguntas respodidas sobre o treeview:

    http://social.msdn.microsoft.com/forums/pt-br/vscsharppt/thread/A819BAB0-A484-473D-8C56-D40B4017A18B

    http://social.msdn.microsoft.com/forums/pt-BR/vscsharppt/thread/8e62a904-40d8-4415-ab30-9d16974e05e3/

     

    agora, um artigo muito bom com screens e um passo a passo de todas as funcionalidades do treeview. infelizmente é em VB.NET mas o artigo é muito bom e serve para entender o funcionamento:

    http://vbtuga.blogspot.com/2009/12/vbnet-utilizando-o-controlo-treeview.html

     

    mas, eu "realmente" recomendo usar recursividade para preencher o treeview. Aqui, tem um exemplo de treeview  e recursividade:

    http://social.msdn.microsoft.com/forums/pt-BR/webgeralpt/thread/d71097d1-467f-4836-91b5-9145b4a5fe7f/

    quinta-feira, 23 de setembro de 2010 11:51
  • Nesse caso é melhor você debuggar o código e ver se ele está passando nesse foreach, teoricamente é para funcionar, se não dar erro possivelmente ele não está passando por esse foreach.

    Experimente colocar um try catch, para ver se retorna algum erro.

     

    Mas é mais provavel que esse foreach não esteja sendo executado.


    Elielson de Andrade elielson( a )gd.com.br www.despcompany.com www.emyface.com
    quinta-feira, 23 de setembro de 2010 11:56
  • tem dados (alguma linha) no  DtPermissao3 ???

    obs: depois dá uma lida nos artigos que passei lá em cima pois, tem exemplos que podem lhe ajudar...

    quinta-feira, 23 de setembro de 2010 11:58
  • fiz um teste parecido e sem problemas.

    veja se lhe ajuda          

     

                calc = new calculadora();
                //preenche nivel 1
                for (int i = 0; i < 3; i++)
                {
                    treeView1.Nodes.Add("node" + i);
                   
                }

                //preenche nivel 2
                int o = 10;
                foreach (TreeNode tr in treeView1.Nodes)
                {
                    tr.Nodes.Add("node" + o);
                    o = o + 4;
                }

                //preenche nivel 3
                foreach (TreeNode tr in treeView1.Nodes)
                {
                    foreach (TreeNode tr2 in tr.Nodes)
                    {
                        tr2.Nodes.Add("nodexx");
                    }
                }

    quinta-feira, 23 de setembro de 2010 12:25
  • Galera valew pela ajuda axei alguns erros no codigo pq usava chave composta..Resolvie =)
    • Marcado como Resposta Renathu quinta-feira, 23 de setembro de 2010 13:12
    quinta-feira, 23 de setembro de 2010 13:11