begin process at 2012 02 12 22:20:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > .NET 2 - UTILISATION DU CLIENTCALLBACK AU SEIN D'UN CONTROLE + DECLENCHEMENT D'EVENEMENT

.NET 2 - UTILISATION DU CLIENTCALLBACK AU SEIN D'UN CONTROLE + DECLENCHEMENT D'EVENEMENT


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :clientcallback, control, évènement, event, ajax Niveau :Expert Date de création :26/06/2005 Date de mise à jour :07/08/2005 19:00:44 Vu / téléchargé :19 645 / 473

Auteur : jesusonline

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


 Description

J'ai fait ce petit controle pour expliquer comment fonctionne le ClientCallBack et ce qu'on peut en faire.

Ce controle est volontairement trés simple et en l'etat completement inutile, mais c'est fait exprés pour que l'on puisse bien comprendre le fonctionnement.

Ce controle ecrit l'heure du serveur, et se remet à jour automatiquement lorsqu'on passe la souris dessus grace au ClientCallBack ( Ajax )

Ce controle declenche un evenement mouseOver son delegates possede 3 arguments, les 2 premiers classique, un object qui est le controle, et un eventArgs, le 3eme est ce qui devra etre renvoyé à javascript, cet argument est passé en reférence.


Vous pourrez trouver d'avantages d'explications dans un article qui se trouve ici http://www.c2i.fr/code.aspx?IDCode=610

Source

  • 'Le controle
  • Imports System
  • Imports System.Collections.Generic
  • Imports System.ComponentModel
  • Imports System.Text
  • Imports System.Web
  • Imports System.Web.UI
  • <ToolboxData("<{0}:ControlExemple runat=""server""></{0}:ControlExemple>")> _
  • Public Class ControlExemple
  • Inherits Control
  • Implements ICallbackEventHandler
  • Public Event MouseOver As EventHandler(Of MouseOverEventArgs)
  • ' delegate un peu spécial, il a la meme signature que les autres, mais prend en plus un paramètre par référence
  • Public Delegate Sub ExempleEventHandler(ByVal sender As Object, ByVal e As EventArgs)
  • 'on ecrit le controle en surchargeant le render
  • Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
  • writer.Write("Survoler l'heure pour la mettre à jour <br /> <span ")
  • writer.WriteAttribute("id", Me.UniqueID)
  • writer.WriteAttribute("onmouseover", _
  • Me.Page.ClientScript.GetCallbackEventReference(Me, _
  • "this.innerHTML", "__onCallBackTermine", "'" & Me.UniqueID & "'"))
  • writer.Write(">")
  • writer.Write(Now.ToLongTimeString)
  • writer.Write("</span>")
  • MyBase.Render(writer)
  • End Sub
  • ' function appelé quand la souris passe sur notre lien
  • ' c'est ici qu'on declenche notre evenement
  • Public Function RaiseCallbackEvent(ByVal eventArgument As String) As String Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
  • Dim e As New MouseOverEventArgs(eventArgument)
  • RaiseEvent MouseOver(Me, e)
  • Return e.NouvelleHeure
  • End Function
  • ' Ici on ecrit la fonction qui sera appellé au retour du callback
  • Private Sub ControlExemple_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
  • If Not Me.Page.ClientScript.IsClientScriptBlockRegistered("callback") Then
  • Dim script As New StringBuilder
  • script.AppendLine("function __onCallBackTermine(result, context)")
  • script.AppendLine("{")
  • script.AppendLine("document.getElementById(context).innerHTML = result;")
  • script.AppendLine("}")
  • Me.Page.ClientScript.RegisterClientScriptBlock(GetType(ControlExemple), "callback", script.ToString, True)
  • End If
  • End Sub
  • End Class
  • Public Class MouseOverEventArgs
  • Inherits EventArgs
  • Private _nouvelleHeure As String
  • Public Property NouvelleHeure() As String
  • Get
  • Return _nouvelleHeure
  • End Get
  • Set(ByVal value As String)
  • _nouvelleHeure = value
  • End Set
  • End Property
  • Private _AncienneHeure As String
  • Public ReadOnly Property AncienneHeure() As String
  • Get
  • Return _AncienneHeure
  • End Get
  • End Property
  • Public Sub New(ByVal ancienneheure As String)
  • _AncienneHeure = ancienneheure
  • End Sub
  • End Class
  • ' La page
  • Partial Class Default3
  • Inherits System.Web.UI.Page
  • ' cet evenement est declenché coté serveur quand le client passe la souris sur l'heure, attention
  • ' la page n'est pas renvoyé, c'est juste l'argument result qui est renvoyé par javascript
  • Protected Sub ControlExemple1_MouseOver(ByVal sender As Object, ByVal e As System.EventArgs) Handles ControlExemple1.MouseOver
  • e.NouvelleHeure = Now.ToLongTimeString
  • End Sub
  • End Class
'Le controle 
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI

<ToolboxData("<{0}:ControlExemple runat=""server""></{0}:ControlExemple>")> _
Public Class ControlExemple
    Inherits Control
    Implements ICallbackEventHandler


    Public Event MouseOver As EventHandler(Of MouseOverEventArgs)
    ' delegate un peu spécial, il a la meme signature que les autres, mais prend en plus un paramètre par référence
    Public Delegate Sub ExempleEventHandler(ByVal sender As Object, ByVal e As EventArgs)

    'on ecrit le controle en surchargeant le render
    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        writer.Write("Survoler l'heure pour la mettre à jour <br /> <span ")
        writer.WriteAttribute("id", Me.UniqueID)
        writer.WriteAttribute("onmouseover", _
                Me.Page.ClientScript.GetCallbackEventReference(Me, _
                    "this.innerHTML", "__onCallBackTermine", "'" & Me.UniqueID & "'"))
        writer.Write(">")
        writer.Write(Now.ToLongTimeString)
        writer.Write("</span>")
        MyBase.Render(writer)
    End Sub

    ' function appelé quand la souris passe sur notre lien 
    ' c'est ici qu'on declenche notre evenement
    Public Function RaiseCallbackEvent(ByVal eventArgument As String) As String Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Dim e As New MouseOverEventArgs(eventArgument)
        RaiseEvent MouseOver(Me, e)
        Return e.NouvelleHeure
    End Function

    ' Ici on ecrit la fonction qui sera appellé au retour du callback
    Private Sub ControlExemple_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        If Not Me.Page.ClientScript.IsClientScriptBlockRegistered("callback") Then
            Dim script As New StringBuilder
            script.AppendLine("function __onCallBackTermine(result, context)")
            script.AppendLine("{")
            script.AppendLine("document.getElementById(context).innerHTML = result;")
            script.AppendLine("}")
            Me.Page.ClientScript.RegisterClientScriptBlock(GetType(ControlExemple), "callback", script.ToString, True)
        End If
    End Sub

End Class

Public Class MouseOverEventArgs
    Inherits EventArgs

    Private _nouvelleHeure As String

    Public Property NouvelleHeure() As String
        Get
            Return _nouvelleHeure
        End Get
        Set(ByVal value As String)
            _nouvelleHeure = value
        End Set
    End Property


    Private _AncienneHeure As String

    Public ReadOnly Property AncienneHeure() As String
        Get
            Return _AncienneHeure
        End Get
    End Property

    Public Sub New(ByVal ancienneheure As String)
        _AncienneHeure = ancienneheure
    End Sub

End Class

' La page 

Partial Class Default3
    Inherits System.Web.UI.Page

    ' cet evenement est declenché coté serveur quand le client passe la souris sur l'heure, attention
    ' la page n'est pas renvoyé, c'est juste l'argument result qui est renvoyé par javascript
    Protected Sub ControlExemple1_MouseOver(ByVal sender As Object, ByVal e As System.EventArgs) Handles ControlExemple1.MouseOver
        e.NouvelleHeure = Now.ToLongTimeString
    End Sub

End Class

 Conclusion

Cette technique à l'air génial mais il ne faut pas oublier que la requete a été effectué via javascript et que la response ne comportera QUE le resultat de la fonction RaiseCallbackEvent. Toutefois la page passera par tous les autres evenements excepté le render, y compris le load de la page ...

Donc si vous avez des traitements lourds et inutile pour un callBack, qui se font dans le page_load, il vous faudra vérifier si la requete provient d'un CallBack. Tout comme on avait la propriété page.isPostBack pour savoir si la page provient d'un postback on a naturellement la propriété page.isCallBack qui fera ce que son nom indique.

Ceci est bien sur du .net 2 et impossible en .net 1  (ou alors extremement compliqué)


 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


 Historique

26 juin 2005 21:14:40 :
MAJ
27 juin 2005 13:45:19 :
rajout du zip + lien de l'article
05 juillet 2005 16:04:38 :
maj
07 août 2005 19:00:44 :
Erreur dans le delegate ...

 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

CREATION D'UN AUTOCOMPLETE JQUERY AVEC UN CODE SOURCE ASP ET... par dedebis84
Source .NET (Dotnet) POSTBACKCONTROL - COMMUNICATION CLIENT/SERVEUR AVEC LES UPDA... par jesusonline
Source avec Zip Source avec une capture Source .NET (Dotnet) UN WEBCONTROL : LE CALLBACKBUTTON par cYoann
Source .NET (Dotnet) RECUPERER LE RENDU D'UN CONTROLE par jesusonline
Source avec Zip Source .NET (Dotnet) .NET2 - REMPLIR UN DROP EN FONCTION D'UN AUTRE GRACE AU CLIE... par jesusonline

Commentaires et avis

Commentaire de kamal101 le 31/05/2006 16:52:41

Ca serait bien de traduire ca en c# avec framework v 2.0
Je ne suis pas très familier avec la nouvelle syntaxe vb. surtout les delegates sont difficiles a traduire...

Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ajax control toolkit et formview ca coince [ par jirap ] Bonjour,ValidatorCalloutExtender, nouveauté dans les objets d'AjaxControlToolkit fonctionne du feu de dieu, dans un formulaire simple. Mais dès qu'il comment installer le toolkit ? [ par hay2006 ] salut,je veins de decouvrir Ajax et ses possibiltés de merveilles avec son control toolkit.mais malheureusement, je ne sias pas comment l'installer po Control ajax Reorderlist [ par yanis7518 ] Salut a tous.Quelqu'un aurait-il deja utilisé le control ajax reorderlist??? parce que j'arrive pas a faire comme dans l'exemple donner sur le site.en Web Custom Event et Javascript [ par ApiO ] Salut tout le monde,Je développe actuellement un site web (asp/vb) sous vs2005. J'ai récemment ajouté à la solution d'un projet un "Web User Control". Utilisation d'event d'un user control vers page parent [ par manu_sharp ] Bonjour et bonne année 2008, J'aimerai savoir si cque je fais est correct en ASP. J'ai un page qui contient un user control. Répercuter un event d'une page dans un usercontrol [ par Rredeyes ] Bonjour à tous,J'ai une page qui est contenue dans une master page. cette master page contient des boutons edit-new-delete.Dans la page, je charge dyn Comment exécuter un event d'un custom control avant le page load. [ par rammstein ] Bonjour, je voudrais savoir comment exécuter un event d'un custom control avant le page load.Je sais que cela est possible mais je n'arrive pas à trou comment ajouter ajax control toolkit [ par faridas ] salut tout le monde! je voudrais savoir comment installer ou ajouter ajax control toolkit j'utilise vb 2005 et framework sdk 2.0 merci d'avance de v Expression reguliere et mise en forme d'une ValidatorCalloutExtender (ajax Control Toolkit) [ par nicolas4200 ] Bonjour à tous,Je me permet de vous solliciter à nouveau afin de résoudre deux soucis qui ont un rapport avec la validation.1/Le premier concerne les ajax master page/redirect [ par foufoulol ] Bonjour, Est-il possible de passer d'une page héritant d'une masterpage a une autre héritant du même masterpage sans chargement de page ? J'ai utilisé


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 0,733 sec (3)

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