OVH Cloud OVH Cloud

[ASP.NET][VB] Récupérer les valeurs de Textbox construis dynamiquement dans un UserControl

1 réponse
Avatar
Thibault
Bonjour à tous,

J'ai un WebForm dans lequel je met un UserControl contenant quelques
textbox.

Dans le code behind de ma page, j'utilise cette synthaxe pour récupérer les
valeurs de mes textbox :

CType(MonUserControl.FindControl("IDduControl"), TypeduControl).text

On m'a dit que ce n'était pas comme ça qu'il fallait récupérer les valeurs
dans un UserControl.

Quelqu'un a t il un article, une url, enfin quelque chose sur les
UserControl me permettant de voir la méthode pour récupérer les valeurs de
mes textbox correctement ???

J'ai vu dans le didacticiel de démarrage rapide, dans la section controle
utilisateur, qu'il fallait utiliser des propriétés comme ceci :

Public Property NomDeMaPropriété() As SonType
Get
Return MonTextbox.Text
End Get
Set (ByVal Value As SonType)
MonTextbox.Text = Value
End Set
End Property

Alors ma question est la suivante comment ça se passe lorsque l'on construit
ces Textbox dynamiquement ????

Dans mon UserControl actuellement j'ai ça :

Dim Count as integer = 10

Sub Page_Load()

for i as integer = 1 to Count

Dim monTextbox as Textbox
monTextbox = New Textbox
monTextbox.ID = "monTextbox" & i
monTextbox.EnabledViewState = True
monTextbox.Text = "Saisissez votre langue ..."
monTextbox.attributes.add("onFocus", "return fcVideChamp('" &
monTextbox.ID & "'); return false;")

MonPlaceHolder.Controls.Add(monTextbox)

next

End Sub

Merci d'avance pour vos réponses

Thibault

1 réponse

Avatar
Ragondin
Bonsoir Thibault,

Tu peux utiliser une collection de controles ou une hashtable, que tu
garnirais au moment de construire tes controles dynamiques.

Ensuite, tu peux

- soit exposer cette collection de controles de la même manière que la
propriété NomDeMaPropriété que tu cites dans ton exemple.
- soit exposer une fonction GetControle(key as string) qui renverrait le bon
controle de la collection (plus simple)

tu aurais qqch du genre :

dim _MesControles as new hashtable

public function GetControl(Key as string) as textbox
get
return ctype(_MesControles(Key), textbox)
end get
end function

Sub Page_Load()

for i as integer = 1 to Count

Dim monTextbox as Textbox
monTextbox = New Textbox
monTextbox.ID = "monTextbox" & i
monTextbox.EnabledViewState = True
monTextbox.Text = "Saisissez votre langue ..."
monTextbox.attributes.add("onFocus", "return fcVideChamp('" &
monTextbox.ID & "'); return false;")

_MesControles.add(monTextbox.ID, monTextbox)

MonPlaceHolder.Controls.Add(monTextbox)

next

ensuite, pour accéder à l'un des controles :

MonControle.GetControl("IDDuControl").text = "Coucou"

Bonne chance


"Thibault" a écrit dans le message de news:
%
Bonjour à tous,

J'ai un WebForm dans lequel je met un UserControl contenant quelques
textbox.

Dans le code behind de ma page, j'utilise cette synthaxe pour récupérer
les valeurs de mes textbox :

CType(MonUserControl.FindControl("IDduControl"), TypeduControl).text

On m'a dit que ce n'était pas comme ça qu'il fallait récupérer les valeurs
dans un UserControl.

Quelqu'un a t il un article, une url, enfin quelque chose sur les
UserControl me permettant de voir la méthode pour récupérer les valeurs de
mes textbox correctement ???

J'ai vu dans le didacticiel de démarrage rapide, dans la section controle
utilisateur, qu'il fallait utiliser des propriétés comme ceci :

Public Property NomDeMaPropriété() As SonType
Get
Return MonTextbox.Text
End Get
Set (ByVal Value As SonType)
MonTextbox.Text = Value
End Set
End Property

Alors ma question est la suivante comment ça se passe lorsque l'on
construit ces Textbox dynamiquement ????

Dans mon UserControl actuellement j'ai ça :

Dim Count as integer = 10

Sub Page_Load()

for i as integer = 1 to Count

Dim monTextbox as Textbox
monTextbox = New Textbox
monTextbox.ID = "monTextbox" & i
monTextbox.EnabledViewState = True
monTextbox.Text = "Saisissez votre langue ..."
monTextbox.attributes.add("onFocus", "return fcVideChamp('" &
monTextbox.ID & "'); return false;")

MonPlaceHolder.Controls.Add(monTextbox)

next

End Sub

Merci d'avance pour vos réponses

Thibault