mercredi 27 mai 2009

Leçon 4 : Comment récupérer les éléments d'un projet dans un TreeView


    Dans la Leçon 2  nous avions vue comment récupérer des éléments (fichiers, répertoires) dans TFS pour un projet donné.

     

    Dans cette leçon, nous allons voir comment mettre ces éléments dans un TreeView.

     

    Etape 1 : Création du TreeView

     

    Rien de bien compliqué.

    TreeView trvItem = new TreeView();

     

    Etape 2 : Création d'une méthode de base

    Nous allons créer une première méthode que l'on pourra appeler de n'importe où.

     

    Elle prend 3 arguments:

  1. Un objet de type VersionControlServer permettant la récupération.
  2. Le chemin à partir du quel rechercher les enfants
  3. Un TreeView contenant les éléments trouvés
  4.  

    private void GetAllItem(VersionControlServer vcs, string path, TreeView trvItem)

    {

    GetAllItem(vcs, path, trvItem.Nodes.Add("$"));

    }

     

    Etape 3: Création d'une méthode récursive

     

    Méthode récursive permettant de parcourir niveau par niveau les éléments.

     

  5. Objet de type VersionControlServer permettant la récupération
  6. Le chemin à partir du quel recherché les enfants
  7. Le TreeNode contenant les éléments trouvés
  8.  

    private void GetAllItem(VersionControlServer vcs,string path,TreeNode trnParent)

    {

     

    Code Complet :

     

    TreeView trvItem = new TreeView();

     

    private void GetAllItem(VersionControlServer vcs, string path, TreeView trvItem)

    {

    GetAllItem(vcs, path, trvItem.Nodes.Add("$"));

    }

    private void GetAllItem(VersionControlServer vcs,string path,TreeNode trnParent)

    {

    //Récupération des éléments du niveau en cours

    //Utilisation de RecursionType.OneLevel pour n'avoir que le niveau en cour

    //Cela permet de connaitre la hiérarchie

    ItemSet itemSet = vcs.GetItems(path, RecursionType.OneLevel);

    //Parcour des éléments trouvé

    foreach (Item item in itemSet.Items)

    {

    //Vérification du type d'item

    //Un répertoire peut avoir des sous éléments mais pas un fichier

                    if (item.ItemType == ItemType.Folder)

                    {

                        //Ajout du noeud en cours

                        TreeNode trn = trnParent.Nodes.Add(item.ServerItem.Replace(path, string.Empty));

                        //Récursion sur la méthode pour la récupération des éléments

                        GetAllItem(vcs, item.ServerItem, trn);

                    }

                    else

                    {

                        //Pour un fichier ajout du noeud

                        trnParent.Nodes.Add(item.ServerItem.Replace(path, string.Empty));

                    }

                }

       }

         

Aucun commentaire: