Création de formulaire dynamique [Résolu]

Signaler
Messages postés
14
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
12 juin 2006
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
En fait j'ai un gros souci ou je suis bloqué j'essaie de faire un formulaire dynamique (les questions du formulaire se trouvant en base de donnée)

Donc en fait j'ai 4 usercontrole qui représente chacun d'entre eux une question type différente

par le code suivant et par une boucle j'affiche mes questions ds mon placeholder:
 
 UserControl  uc = (UserControl)LoadControl("Questions/WUC_QCMouinon.ascx");
 Type ucType = uc.GetType();
 PropertyInfo ucMonParametre = ucType.GetProperty("MonParametre");
 string param = drAffQuest["id_question"].ToString();
 ucMonParametre.SetValue(uc, param, null);
 PlAffQuest.Controls.Add(uc);

(dans cet exemple j'ai un label et une dropdownlist dans mon ascx)

j'aimerais ensuite dans ma page aspx lors d'un clic récupéré les valeurs séléctionnée par l'utilisateur

P.s. voici mes paramètres dans mes pages ascx:
    protected string m_MonParametre = "Mon message par défaut";

    public string MonParametre
    {
        get
        {
            return this.m_MonParametre;
        }
        set
        {
            this.m_MonParametre = value;
        }
    }

Merci bien d'avance

7 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
erf en voyant ton code je pensais que tu maitrisais le sujet ;) et qu'il te manquait juste l'idée

voici pour le code de l'UC

Partial Class CSP_UC_UCToto
    Inherits UserControl
    Implements IQuestion




    Public Event click() Implements IQuestion.click


    Private _maProperty As String
    Public Property maProperty() As String Implements IQuestion.maProperty
        Get
            Return _maProperty
        End Get
        Set(ByVal value As String)
            _maProperty = value
        End Set
    End Property




    Protected Sub btn1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn1.Click
        RaiseEvent click()
    End Sub


End Class




Public Interface IQuestion
    Property maProperty() As String
    Event click()
End Interface

(merde j'ai fait du VB ;p)

IQuestionUC = (IQuestion)LoadControl("Questions/WUC_QCMouinon.ascx");
IQuestionUC.TaPropriete = tontruc
IQuestionUC.click += new EventHandler(IQuestionUC_Click);

est-ce que je suis plus explicite ?





<hr />

Cyril - MVS - MCP
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Bonnjour,

je ne procéderais pas exactement de cette sorte.

Je créerais une interface IQuestion qui aurait une propriété et un évenement, j'implémenterais cette interface dans mes 4 UC, et aprés je casterais mes UC en IQuestion et puis roulez jeunesse.

<hr />Cyril - MVS - MCP
Messages postés
14
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
12 juin 2006

Euh ouay ta solution a l'air bien chouette

mais euh je vois po très bien ton histoire d'interface si t'arrivais a développer ce serait vraiment vraiment cooool

et euh caster ?? loool chu un peu un noob
Messages postés
14
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
12 juin 2006

Bah déja un merci ^^

Ensuite euh c'est vrai que j'ai jamais bossé avec les interface donc je vais me documenter et décortiquer un peu ce que tu me propose et je pense que ca va le faire sinon je reviendrais ici ^^

Mais euh le truc que je saisi pas c'est comment je ferais lors de mon Btsave.click pour récupéré les valeurs des différents champs qui se trouve ds différent UC pour les enregisterer en base de donnée
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Ce que je te propose alors c'est d'avoir un objet métier genre Reponse, de rajouter dans ton interface une propriété de type List<Reponse>

et quand on click dans l'uc tu remplis List<Reponse> ainsi tu pourras le recuperer aprés le click lors de ta page.

<hr />Cyril - MVS - MCP
Messages postés
14
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
12 juin 2006

OUay en en fait j'ai un peu de peine a vraiment comprendre ton code
donc en fait tout ce qui est interface ce trouve ds le code-behind de UC et donc tu va donc crée un interface qui permet de faire quoi en fait
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Renseigne toi sur les interfaces :)

tu met une interface dans un fichier /app_code/*.cs  et ensuite tu dis à tes 4 UC d'implémenter cette interface.

En faisant implémenter l'interface à tes UC, cela te permet de pouvoir travailler sur n'importe lequel des 4 tout en ayant des propriétés communes.  

<hr />Cyril - MVS - MCP