Generer des controles dynamiquement et recuperer leurs evenement et leurs valeurs

Contenu du snippet

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

A voir également

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.