begin process at 2012 02 10 19:11:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > GENERER UN POSTBACK ET RECUPERER L'EVENEMENT À PARTIR D'UN CONTROL DE VOTRE CREATION

GENERER UN POSTBACK ET RECUPERER L'EVENEMENT À PARTIR D'UN CONTROL DE VOTRE CREATION


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :postback, evenement, dynamique Niveau :Initié Date de création :10/12/2004 Vu / téléchargé :16 727 / 260

Auteur : jesusonline

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


 Description

Ce code montre comment faire un controle effectuant un postback, et ensuite recuperer l'evenement dans une page.

Le code meme du controle est montré ci dessous, il est assez bien commenté, donc je n'en dis pas plus dessus.
Par contre une explication sur comment l'utiliser et peut etre necessaire.

Tout d'abord pour faire un controle de ce genre, il faut créer un nouveau projet : Bibliothèque de controles web, dans visual Studio, une fois la bas, vous mettez le code ci dessous. Ensuite il vous suffit de compiler le projet, et vous avez votre controle sous forme de dll.
Maintenant ouvrez votre projet web dans l'explorateur de solution de Visual Studio, ajouter une reference, recherchez la dll nouvellement créé (dans le dossier bin) puis selectionner et OK.
Ensuite pour ajouter notre controle dans la boite a outil, suffit de cliquer droit dans la boite à outil puis ajouter/supprimer des composants, parcourir, et rechercher la dll, et enfin OK. Vous avez maintenant votre controle dans la boite a outil, vous pourrez le placer sur votre page par simple drag&drop.

Dans le code vous pourrez recuperer l'evenement du mouseover, comme tout les autres evenements, comme ceci :
    Private Sub Label1_MouseOver(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.MouseOver
        'le label a été survolé
    End Sub


Source

  • Imports System.ComponentModel
  • Imports System.Web.UI
  • <Assembly: TagPrefix("Moi.MesControles", "MesControles")>
  • <ToolboxData("<{0}:Label runat=""server""></{0}:Label>")> Public Class Label
  • Inherits System.Web.UI.WebControls.Label
  • 'si AutopostBack est à true, il y aura un postback lors du passage de la souris sur le label
  • Private _AutoPostBack As Boolean
  • <Bindable(True), Category("Appearance"), DefaultValue("False")> Property [AutoPostBack]() As Boolean
  • Get
  • Return _AutoPostBack
  • End Get
  • Set(ByVal Value As Boolean)
  • _AutoPostBack = Value
  • End Set
  • End Property
  • 'Evenement qui sera declenché au passage de la souris
  • Public Event MouseOver As EventHandler
  • 'La méthode render permet d'ecrire le rendu HTML du controle
  • 'Dans notre cas, si _AutoPostBack est à true on rajoute l'attribut onmouseover
  • 'Page.GetPostBackClientEvent est la fonction qui ecrit le code javascript du postback
  • 'c'est à dire, le __DoPostBack('','') dans l'attribut, mais aussi le code javascript du _DoPostBack
  • 'et aussi ecrire les deux champs cachés, il ecrit qu'une seul fois tout ca, s'il est appellé plusieurs fois
  • 'ensuite apres avoir ajouté ou non l'attribut, on ecrit le reste du controle
  • Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
  • If _AutoPostBack Then
  • output.AddAttribute("onmouseover", "javascript:" & Page.GetPostBackClientEvent(Me, "onMouseOver"))
  • End If
  • MyBase.Render(output)
  • End Sub
  • 'Quand le label va se charger, on verifie si il vient d'un PostBack, si oui,
  • 'On regarde si c'est notre controle qui a declenché le postback, et on regarde si
  • 'l'argument passé est bien "onmouseover", on pourrait imaginer le meme controle qui posséde l'evenement DoubleClick
  • 'si toutes ces conditions on lance l'evenement via RaiseEvent
  • Private Sub Label_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • If Page.IsPostBack Then
  • If Not Page.Request.Params("__EVENTTARGET") Is Nothing AndAlso Page.Request.Params("__EVENTTARGET") = Me.UniqueID AndAlso Page.Request.Params("__EVENTARGUMENT") Is Nothing AndAlso Page.Request.Params("__EVENTARGUMENT") = "onMouseOver" Then
  • RaiseEvent MouseOver(Page.Request.Params("__EVENTTARGET"), (New EventArgs).Empty)
  • End If
  • End If
  • End Sub
  • End Class
Imports System.ComponentModel
Imports System.Web.UI


<Assembly: TagPrefix("Moi.MesControles", "MesControles")> 

<ToolboxData("<{0}:Label runat=""server""></{0}:Label>")> Public Class Label
    Inherits System.Web.UI.WebControls.Label

    'si AutopostBack est à true, il y aura un postback lors du passage de la souris sur le label
    Private _AutoPostBack As Boolean
    <Bindable(True), Category("Appearance"), DefaultValue("False")> Property [AutoPostBack]() As Boolean
        Get
            Return _AutoPostBack
        End Get
        Set(ByVal Value As Boolean)
            _AutoPostBack = Value
        End Set
    End Property

    'Evenement qui sera declenché au passage de la souris
    Public Event MouseOver As EventHandler

    'La méthode render permet d'ecrire le rendu HTML du controle
    'Dans notre cas, si _AutoPostBack est à true on rajoute l'attribut onmouseover
    'Page.GetPostBackClientEvent est la fonction qui ecrit le code javascript du postback
    'c'est à dire, le __DoPostBack('','') dans l'attribut, mais aussi le code javascript du _DoPostBack
    'et aussi ecrire les deux champs cachés, il ecrit qu'une seul fois tout ca, s'il est appellé plusieurs fois
    'ensuite apres avoir ajouté ou non l'attribut, on ecrit le reste du controle
    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
        If _AutoPostBack Then
            output.AddAttribute("onmouseover", "javascript:" & Page.GetPostBackClientEvent(Me, "onMouseOver"))
        End If
        MyBase.Render(output)
    End Sub

    'Quand le label va se charger, on verifie si il vient d'un PostBack, si oui,
    'On regarde si c'est notre controle qui a declenché le postback, et on regarde si
    'l'argument passé est bien "onmouseover", on pourrait imaginer le meme controle qui posséde l'evenement DoubleClick
    'si toutes ces conditions on lance l'evenement via RaiseEvent
    Private Sub Label_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Page.IsPostBack Then
            If Not Page.Request.Params("__EVENTTARGET") Is Nothing AndAlso Page.Request.Params("__EVENTTARGET") = Me.UniqueID AndAlso Page.Request.Params("__EVENTARGUMENT") Is Nothing AndAlso Page.Request.Params("__EVENTARGUMENT") = "onMouseOver" Then
                RaiseEvent MouseOver(Page.Request.Params("__EVENTTARGET"), (New EventArgs).Empty)
            End If
        End If
    End Sub
End Class

 Conclusion

Ce code fait suite à une question dans le forum : http://www.aspfr.com/forum.v2.aspx?rm=1&ID=348336

Le but de ce code est surtout de montrer comment generer un postback à partir d'un control, c'est un exemple tres basique pour bien comprendre les choses.

Si vous avez des questions, commentaires etc... ca se passe en dessous.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) UTILISATION DE LA MÉTHODE SORT ET SORTDIRECTION AVEC UN GRID...
Source .NET (Dotnet) RESPONSE.FILTER : MANIPULATION DU STREAM DE SORTIE ASP.NET
Source avec Zip Source .NET (Dotnet) OPTIMISATION DE LA SERIALISATION JSON POUR LES LIST<T>
Source avec Zip Source .NET (Dotnet) CRAWLABLELINKBUTTON : UPDATEPANEL ET RÉFÉRENCEMENT
Source .NET (Dotnet) POSTBACKCONTROL - COMMUNICATION CLIENT/SERVEUR AVEC LES UPDA...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

 Sources en rapport avec celle ci

Source avec Zip CRÉATION DE RAPPORTS EXCEL DYNAMIQUE EN ASP par foliv57
Source avec Zip Source avec une capture Source .NET (Dotnet) ONGLETS DYNAMIQUES POUR ASP.NET par s_shadow
Source avec Zip Source .NET (Dotnet) EVITER QUE LES ERREURS DES USERCONTROLS, ARRETENT LE FONCTIO... par jesusonline
Source avec Zip Source .NET (Dotnet) DÉCLENCHEMENT D'ÉVÉNEMENT DANS UN CONTROL UTILISATEUR ET REM... par Thanos_the_yopper
Source avec Zip Source avec une capture Source .NET (Dotnet) .NET2 GESTIONNAIRE DE DROITS DE FICHIERS AVEC SQL SERVER EN ... par gldfdp

Commentaires et avis

Commentaire de jeffwow le 10/12/2004 21:43:57

En plein ce que je recherchais :)

J'suis presque gêné que cette source ait été écrite pratiquement juste pour moi lol

Un gros 10/10 à défaut de pouvoir choisir 15/10

Merci,

Jeff

Commentaire de jesusonline le 10/12/2004 21:46:05 administrateur CS

t'inquiete je pense pas que cette source ne serve que pour toi

Cyril

Commentaire de daivil le 07/03/2005 16:16:36

J'ai du mal a adapter cette source en C# en essayant de passer par une classe...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Probleme avec un PostBack et controle dynamique [ par snakpak123 ] Bonjour,j'ai un problème avec la génération de contrôle dynamique et le Postback. Je genère une table dynamique avec du texte et 2 boutons(Édition et LinkButton dynamique + evenement [ par yanis7518 ] Salut a tousj'ai un linkbutton qui est créé lors du Page_Init (jusque la tout va bien )je l'abonne a l'evenement Click de cette manière :lnk.Click Sitemap dynamique ? [ par Monico9385 ] Bonjour,j'aurai aimé savoir si c'était possible de définir un sitemap dans le code behind d'une page. En effet, je dois afficher un noeud du sitemap, Problème evenement / Fermeture navigateur / onbeforeunload [ par Onizukasan ] Bonjour à tous.Tout d'abord je travaille sous VisualStudio2003 / Framework .NET en version 1.Voici mon problème:Je dois pouvoir intercepter la fermetu image et evenement LOAD [ par yanis7518 ] Salut a tousj'utilise l'evenement load du control image pour savoir si l'image est chargée ou non. le problème est que meme lorsque le serveur me renv Cross PostBack : quelques questions [ par mezthium ] Bonjour,Je debute dans l'ASP.NET et je galère un peu avec le passage de paramètres en méthode POST grâce au Cross-postback.Deja, J'ai essayé un exempl appel d'une fonction après postback [ par equinoxe83 ] Bonjour,J'ai un phénomène curieux que je ne comprends pas.Je dispose d'une fonction qui va rendre un bouton enabled ou pas (située en haut de page).La Invalid postback argument [ par djay99 ] Bonjour tout le monde,J'ai poste ce probleme dans un topic relatant ce probleme mais ce topic est archive c'est pourquoi je me permet de le reposter i PostBack event Repeater [ par premiumbfd ] Bonjour,J'ai un petit souci au niveau de l'événement ItemCommand d'un Repeater ASP.NET : Au départ, il m'affichait l'erreur 'Invalid post bouton créé dynamiquement + evenement [ par jimmy28 ] Salut a tous,Apres avoir cherché sur le forum, je n'ai toujours pas de réponse simple et claire.Je bosse sous VS2005.Je souhaite créer des boutons dyn


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,716 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales