A l'aide: WIZARD

Signaler
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007
-
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007
-
Bonjour à vous Ô programmeurs, j'ai besoin de votre aide.

Voilà mon problème :

Je crée un wizard dynamiquement, en fonction d'un datagrid.
Chaque step de mon wizard (GUI) peut être de 3 types: alerte, action ou send.
Pour chaque type, j'ai crée un Panel,

Voilà comment je procède actuellement (pseudo code) :

--------------------------------------------------------
for i=0 to i = grid.row.count -1

Case alerte :
              dim myStep as New WizardStep
              myStep.type = WizardStepType.Step
               myStep.Controls.Add(alertePanel)
              Wizard.wizardSteps.insert(i, myStep)

Case action
            ... meme principe.
...
--------------------------------------------------------

Mais, le problème survient quand je veux affecter les différents composant des Panels, ils sont tous à "NULL" sauf le dernier.
Je me suis dit qu'il fallait créer 1 panel par Step,  or, il est impossible de dupliquer des panels.

Donc je me retrouve coincé, et je n'ai plus d'idées pour continuer.

J'espère avoir été assez clair et j'attends avec impatience vos idées, solutions, remarques,...

Merci d'avance à tous

 ElpenS

10 réponses

Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
Salut,

Tu pourrais tout simplement  créer 3 Controls qui héritent de Panel, où tu mets tout ce que tu veux dedans...
Comme ça tu peux les instancier et faire :

myStep.Controls.Add(New MonAlertPanel())

<hr size="2" width="100%" />Nurgle (Antoine)
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007

Merci pourr ta réponse.

Et en effet, l'histoire de l'héritage me parait pas mal.
Cependant, j'ai quelques soucis pour effectuer cela, pourrais-tu m'indiquer de plus amples infos??

Merci

 ElpenS
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
En fait je pense que le plus simple c'est les UserControls...

Tu rajoute 3 UserControl dans ton site web (trois fichiers .ascx), ensuite tu mets ce que tu veux dedans.

Et dans ta page tu importes chaque UC comme ça :

<%@ Register Src="AlertUC.ascx" TagName="AlertUC" TagPrefix="uc1" %>


Et dans ton code :

myStep.Controls.Add(New AlertUC())

ou

myStep.Controls.Add(New UC_AlerUC())

(je sais plus lequel... de toute façon l'intellisense te le dira)


L'avantage de cette technique est que tu as un designer pour les
UserControl, alors que tu n'en a pas quand tu crées ton propre control
qui hérite de Panel

<hr size="2" width="100%" />Nurgle (Antoine)
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007

C'est bien pensé ton truc...

Sauf que j'ai un problème :
- Quand j'utilise ta facon de faire,
    myStep.Controls.Add(New AlertUC()), rien ne se passe. Aucune erreur, aucun affichage.

Par contre, si j'utilise :
dim  uc1
As UserControl =
CType(LoadControl(
"Pane.ascx"), UserControl)

myStep.Controls.Add(UC1), il s'affiche correctement...

Mon problème est ensuite d'utiliser les functions crées dans le control ascx....

Merci pour tes réponses

 ElpenS
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
Ah, et pourquoi pas :

Dim uc1 As AlertUC = CType(LoadControl("Pane.ascx"), AlertUC)
myStrp.Controls.Add(uc1)

<hr size="2" width="100%" />Nurgle (Antoine)
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007

Mon problème est de "référencé" mon control. J'entends par là qu'il faudra toujours que je retrouve mon control, pour pouvoir utiliser les méthode.

Il n'existe pas quelque chose pour mettre les fonctions "globales"?

Merci

 ElpenS
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
Eh bien dans le code de ta page (dans le code-behind, dans la classe elle-même) tu mets un :

Private uc1 As AlertUC

Et comme ça tu peux y accéder de n'importe où dans ta page (dans le Page_Init, le Page_Load, ou ce que tu veux...)
Attention quand même à ce qu'il ait été instancié avant de l'utiliser (je te conseille de faire donc ton traitement dans le Page_Init, c'est là que l'on crées des Controls, normalement...) !

<hr size="2" width="100%" />Nurgle (Antoine)
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007

Bon, là je suis perdu totalement...
Merci déjà pour le temps que tu passes à m'inicier au codage...

Si je crée un control au début, quand je clique sur mon bouton "Next" dans le wizard, comment puis-je savoir l'état de mes boutons, sur le control courant

(j'espère que t'as compris ce que je demande... )

Mille merci encore

 ElpenS
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
Ah ok, là je comprend

Les valeurs de tes controls sont stockés dans le ViewState !
A chaque rechargement de la page (et donc aussi quand on clique sur Next), l'ensemble des WizardSteps est recréé (vu que tu les crées toutes dans le Page_Init), et leurs valeur sont toujours bonnes (elles ont été récupérées dans le viewstate).
Ensuite à la fin de ton Wizard, pour récupérer les informations de tes controls, tu y accèdes comme d'habitude ! (même si il on été remplis bien avant dans le Wizard)

<hr size="2" width="100%" />Nurgle (Antoine)
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007

Yes, je vais m'atteler à cette tâche immédiatement.

Sinon, j'ai une autre alternative (pas très jolie, mais fonctionnelle) qui consiste à stocker tout les objects "Step" dans un tableau d'object. Ainsi, je peux y accéder en fonction de l'index courant du wizard.

Merci encore pour toute les précisions que tu m'as fournis.

 ElpenS