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 :
cellChamp étant une cellule de la Table (asp:TableCell) qui acceuille un contrôle donné.
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
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.
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.
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
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 :
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.<CompoSiteropDownAutoComplete ID="dac1" runat="server"/>
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 ?
Partager