Ce bout de code nous montre comment créer et gerer dynamiquement des controles
Plusieurs cas sont etudiés:
- Comment fait on pour gerer les evenements
- Comment fait on pour avoir accés au propriétés des controles dynamique
J'ai placé les controles dans un placeholder ce qui epure tres netemment le coté aspx
Source / Exemple :
- Recuperer Valeur Textbox Dynamique.aspx**********
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Recuperer Valeur Textbox Dynamique.aspx.vb" Inherits="TestExemple.MaPage"%>
<html>
<head>
<title>Generer des controles dynamiquement et recuperer leurs evenement et leurs
valeurs </title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:placeholder id="PlaceHolder1" runat="server" />
</form>
</body>
</html>
- Recuperer Valeur Textbox Dynamique.aspx.vb**********
Public Class MaPage
Inherits System.Web.UI.Page
Protected WithEvents PlaceHolder1 As System.Web.UI.WebControls.PlaceHolder
Protected MonRadioButton As New System.Web.UI.WebControls.RadioButtonList
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'On ajoute un peu de text au PlaceHolder
PlaceHolder1.Controls.Add(New LiteralControl("Déclenchement de l'evenement"))
'On Configure notre RadiobuttonList
MonRadioButton.RepeatDirection = RepeatDirection.Horizontal
MonRadioButton.Width = Unit.Pixel(400)
MonRadioButton.DataSource = Split("Click,OnChanged", ",")
MonRadioButton.DataBind()
MonRadioButton.SelectedIndex = 0
'Par Défaut on dit que si il change on recharge la page
MonRadioButton.AutoPostBack = True
PlaceHolder1.Controls.Add(MonRadioButton)
Dim MonTextBox As TextBox
'On fait une boucle pour mettre 10 Textbox
For i As Integer = 0 To 10
'On reinstancie le texbox
'et on le configure
MonTextBox = New TextBox
MonTextBox.ID = "TonTextbox" & i
MonTextBox.Text = MonTextBox.ID
'Si le radiobutton est sur onchanged
If MonRadioButton.SelectedValue = "OnChanged" Then
'On dit que des que le texbox change il fait un postback
MonTextBox.AutoPostBack = True
'Quand le textbox change il execute MonTextBox_TextChanged
AddHandler MonTextBox.TextChanged, AddressOf MonTextBox_TextChanged
End If
'On ajoute notre textbox dans le Placeholder puis un saut de ligne
PlaceHolder1.Controls.Add(MonTextBox)
PlaceHolder1.Controls.Add(New LiteralControl("<br>"))
Next
'On en a plus besoin donc on peut l'enlever de la memoire
MonTextBox.Dispose()
'Si on est sur click
If MonRadioButton.SelectedValue = "Click" Then
'On va rajouter un bouton
Dim LeBouton As New Button
LeBouton.Text = "valider"
'On lie le click du bouton à l'evenement on l'ajoute au placeholder
AddHandler LeBouton.Click, AddressOf LeBouton_Click
PlaceHolder1.Controls.Add(LeBouton)
End If
End Sub
Private Sub MonTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
'On crée un nouveau textbox
Dim LeTextBox As New TextBox
'On Assigne notre nouveau textbox, avec l'objet qui nous a envoyé ici
'On voit ainsi l'importance de sender
LeTextBox = CType(sender, TextBox)
'Un peu de text pour verifier que ca marche bien
Response.Write("Vous venez de modifié : " & LeTextBox.ID & " avec la valeure : " & LeTextBox.Text)
End Sub
Private Sub LeBouton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim LeTextBox As TextBox
For i As Integer = 0 To 10
Try
'idem que si dessus sauf que la on cherche le textbox
'dans la page, on fait donc une boucle sur tous les 10 textbox
LeTextBox = New TextBox
LeTextBox = CType(Page.FindControl("TonTextbox" & i), TextBox)
'Un peu de text
Response.Write("Texbox N°" & i & " : " & LeTextBox.Text & "<br>")
Catch ex As Exception
'Une connerie vient d'etre faite
'Surement parce que le texbox recherché n'existe pas
End Try
Next
End Sub
End Class
Conclusion :
Je suis en code behind, j'ai fait ca dans VS.net 2003, j'ai une assembly qui s'appelle TestExemple
Si vous avez des questions n'hesitez pas
J'ai essayé de commenter un peu le code, mais il y a pas grand chose à commenter
Mettez moi une note ca fait toujours plaisir
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.