sdfsdf
Messages postés3Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention 6 octobre 2009
-
3 oct. 2009 à 20:10
sdfsdf
Messages postés3Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention 6 octobre 2009
-
6 oct. 2009 à 00:42
Bonsoir, je suis en BTS IG et je travaille sur un projet de PTI. Ce dernier est une sorte de Quizz qui gère des questions, organisés en sous-thème, eux même organisés en thèmes.
Par exemple : Thème > Sous-Thème > Liste de questions
Histoire > 1er Empire > la bataille d'Austerlitz
Pour se faire, j'ai trois classes Theme, SousTheme et Question.
Dans un Form j'ai d'un coté un TreeView qui affiche les thèmes et les sous-thèmes, de l'autre une lstBox qui affiche les listes de questions associés aux sous-thème choisi.
Pour remplir le TreeView, je passe par deux collection :
[b]
private SortedList<String, SousTheme> lesSousThemes = new SortedList<String, SousTheme>();
private SortedList<String, Theme> lesThemes = new SortedList<String, Theme>();
foreach (Theme letheme in this.lesThemes.Values)
{
//Création d'un noeud Root
this.tvThSTh.Nodes.Add(new TreeNode(letheme.getTheme()));
}
foreach (SousTheme leSousTheme in this.lesSousThemes.Values)
foreach (Theme letheme in this.lesThemes.Values)
{
if (leSousTheme.getnomTheme() == letheme.getTheme())
{
this.tvThSTh.Nodes[letheme.getThemeIndex()].Nodes.Add(new TreeNode(leSousTheme.getSousTheme()));
}
}
}
}
Le problème qui me tracasse est que si par exemple j'ajoute une Catégorie qui n'est pas en bout de liste, elle recevra toutes les sous-catégorie de la Catégorie de l'indice qu'elle a remplacée.
Par exemple voici l'étape initiale :
AAA
- Sous Cat1
- Sous Cat2
BBB
- Sous Cat 1
Si j'ajoute une catégorie alphabétiquement classée au dessus voilà le résultat :
000
- Sous Cat1
- Sous Cat2
AAA
- Sous Cat 1
BBB
Je galère depuis des heures, j'espère que quelqu'un a une idée brillante pour m'aider à associer les sous-catégories à la bonne catégorie...
il faut absolument que les indexes du treeview soit en phases, donc tu ne peux q'inserrer en fin de liste.
lorsque je travaille avec les treeview je crée des objets permettant de stocker le node pour le retrouver à coup sûr.
par exemple, dans ton cas
ajoute un membre TreeNode ThemeNode; à la classe Theme
Puis dans la boucle d'insertion de themes, stocke le node correspondant:
foreach (Theme letheme in this.lesThemes.Values)
{
//Création d'un noeud Root
TreeNode node=new TreeNode(letheme.getTheme());
lethem.ThemeNode=node;
this.tvThSTh.Nodes.Add(node);
}
et dans la boucle d'insertion des sous themes
if (leSousTheme.getnomTheme() == letheme.getTheme())
{
//ajout du sousthem au theme principal
letheme.ThemeNode.Nodes.Add(new TreeNode(leSousTheme.getSousTheme()));
}
Je n'ai pas testé ce code, il est donc possible qu'il ne fonctionne pas tel que, mais c'est l'idée générale qui compte.
sdfsdf
Messages postés3Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention 6 octobre 2009 6 oct. 2009 à 00:27
Super ! Merci Robert ton exemple m'a permis de réaliser des ajouts n'importe où dans la liste des thèmes !
Par contre un nouveau problème, quand j'ajoute un premier sous-thème tout va bien, mais quand j'en ajoute un seconde, le premier se retrouve deux fois et ainsi de suite à chaque ajout... pour faire simple : à chaque ajout toutes les valeurs précédentes sont répétées et la listes de sous-thèmes qui devraient être la seule affichée apparait en bout de liste.
Voici ma procédure de mise à jour :
private void majListe()
{
tvThSTh.Nodes.Clear();
foreach (Theme letheme in this.lesThemes.Values)
{
//Création d'un noeud Root
this.tvThSTh.Nodes.Add(letheme.getNoeudTheme());
if (this.lesSousThemes.Values.Count > 0)
{
foreach (SousTheme leSousTheme in this.lesSousThemes.Values)
{
if (leSousTheme.getnomTheme() == letheme.getTheme())
{
//ajout du sous-thème au thème principal
letheme.getNoeudTheme().Nodes.Add(new TreeNode(leSousTheme.getSousTheme()));
}
}
}
}
}
Je ne comprends pas comment cela est possible puisque je vide mon TreeView à chaque mise à jour... j'ai regardé avec un espion ma collection LesSousThèmes et elle ne contient que les 4 sous-thèmes ajoutées, par contre mon TreeView affiche un Count de 10 pour le Noeud "A"... c'est donc qu'il y a un problème à ce niveau... est-ce que j'utilise mal la procédure Clear ?