Salut tout le monde.

Là je m'attaque à un truc qui me parait super balaise.

J'ai fabriqué un ASCX (un contrôle utilisateur) et je voudrais le mettre en oeuvre à partir d'une classe externe. Je pense qu'en mettant du code je vais être plus explicite.

J'ai un ASCX (un autre puisque tout mon site repose sur l'utilisation des ASCX.) dans lequel je monte une grosse ASP:Table. Dans chaque cellule je charge des contrôles (TextBox, dropDownList, ...). ça fait un truc comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
With cellChamp
                .Controls.Add(FormulairX.AjouterChamp("EXEC dbo.SITE_DefinitionChampFormulaire " & champ("Id_ChampFormulaire")))
                .ID = "cell" & champ("Nom_Champ")
                .CssClass = "FORM_CelChamp"
End With
cellChamp étant une cellule de la Table (asp:TableCell) qui acceuille un contrôle donné.
la Fonction AjouterChamp de ma classe FormulaireX prends une requête SQL comme paramettre car avec le résultat de cette requête elle va tout faire. En voici le code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Public Shared Function AjouterChamp(ByVal rqDefinitionChamp As String) As Control
            Dim dtDefinitionChamp As DataTable = New DManager("DataDev").RetournerTable(rqDefinitionChamp)
 
            Select Case dtDefinitionChamp.Rows(0).Item("Type_Champ")
                Case "txt"
                    Dim ChampText As New TextBox
                    With ChampText
                        .Text = dtDefinitionChamp.Rows(0).Item("Param_Text1")
                        .ID = dtDefinitionChamp.Rows(0).Item("Type_Champ") & dtDefinitionChamp.Rows(0).Item("Nom_Champ")
                        .Width = Unit.Pixel(dtDefinitionChamp.Rows(0).Item("Param_Num1"))
                    End With
                    Return ChampText
 
                Case "dac"
                    Dim dac As New Control
                    dac.Controls.Add(New System.Web.UI.WebControls.par)
 
 
                Case Else
                    Dim ChampText As New TextBox
                    ChampText.Text = "sais pas"
                    Return ChampText
            End Select
        End Function
Je vous ai pas mis tous les Case, l'idée c'est de voir le plus simple avec une TextBox, amis j'ai d'autre case qui font des trucs pas possible, genre deux DropDownList pour faire une recherche entre deux bornes dans la base.

Là où je cale c'est sur le Case "dac". J'ai laissé mon cod ene cours car je ne sais pas trop quoi mettre. L'idée c'est de dire que je vais chercher mon ASCX qui s'appelle "DropDownAutoComplete" avec une chaine du genre :
<CompoSiteropDownAutoComplete ID="dac1" runat="server"/>
J'arrive à faire ça lorsque je suis dans un ASCX côté CodeBehind parce que j'utilise la fonction ParseControl de System.Web.UI.TemplateControl. Mais là, dans ma classe externe, j'arrive pas à l'appeller.

Je pense bien que c'est aprce que je maitrise encore mal le concept objet et que ça doit être tout couillon à faire, mais je sèche.

Pouvez vous m'aider ?