begin process at 2010 07 31 04:56:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

 > ASSOCIER DU CODE JAVASCRIPT AUX CONTROLES DERIVÉS

ASSOCIER DU CODE JAVASCRIPT AUX CONTROLES DERIVÉS


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Composants Source .NET ( DotNet ) Classé sous :javascript, customcontrol, héritage, webcontrol Niveau :Débutant Date de création :30/03/2004 Date de mise à jour :02/04/2004 21:38:21 Vu / téléchargé :12 730 / 199

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

Un des inconvenients des controles tout fait par microsoft est que, je trouve, ne posséde pas assez de fonctionnalité coté client.
Cette classe permet d'ajouter du code javascript associé aux evenements javascript du controle. Par exemple grace à cette class nous pouvons facilement ajouté du code javascript a l'evenement onclick du control bouton

pour ce faire il vous faut créer un nouveaubutton derivant de button

et ensuite dans la methode AddAttributesToRender faire comme cela :

                Protected Overrides Sub AddAttributesToRender(ByVal writer As System.Web.UI.HtmlTextWriter)
                    MyBase.AddAttributesToRender(writer)

                    Dim isOnClickAttributsAdded As Boolean = False

                    Dim CodeJavascript As New Cyril.Controls.Utility.EcrireEvenementJavascript(w riter, Me.UniqueID)

                    If Me.isOneClick = True Then
                        If isOnClickAttributsAdded = False Then
                            writer.AddAttribute("OnClick", "self.setTimeout('OnClick" & Me.UniqueID & "();' ,1);")
                            isOnClickAttributsAdded = True
                        End If

                        CodeJavascript.OnClick("document.getElementById('" & Me.UniqueID & "').disabled=true;")

                    End If

                    CodeJavascript.EcrireJavascript()

                End Sub


vous avez un exemple concret pour un bouton ici : http://www.aspfr.com/code.aspx?ID=21560


Source

  • Imports System.ComponentModel
  • Imports System.Web.UI
  • Imports System.Web.UI.Webcontrols
  • Imports System.Web
  • Namespace Cyril
  • Namespace Controls
  • Public Class EcrireEvenementJavascript
  • Private _UniqueID As String
  • Private _Writer As System.Web.UI.HtmlTextWriter
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Contient toutes les lignes de codes
  • ''' pour chaque Evenement
  • ''' A un index est associé un evenement
  • ''' le numero de l'index est ecrit dans CodeEvenement
  • '''
  • ''' Chaque ligne de code est séparé par {|||}
  • ''' </summary>
  • ''' <remarks>
  • ''' </remarks>
  • ''' <history>
  • ''' [DURAND Cyril] 30/03/2004 Created
  • ''' </history>
  • ''' -----------------------------------------------------------------------------
  • Private aLignesCode(17) As String
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Un Array qui contient les codes des evenements
  • ''' </summary>
  • ''' <remarks>
  • ''' </remarks>
  • ''' <history>
  • ''' [DURAND Cyril] 30/03/2004 Created
  • ''' </history>
  • ''' -----------------------------------------------------------------------------
  • Private CodeEvenement() As String _
  • = {"onAbort", "onBlur", "OnChange", _
  • "OnClick", "onDblclick", "onDragdrop", _
  • "onError", "onFocus", "onKeydown", _
  • "onKeypress", "onLoad", "onMouseOver", _
  • "onMouseOut", "onReset", "onResize", _
  • "onSelect", "onSubmit", "onUnload"}
  • Private Enum NomCodeEvenement As Short
  • onAbort = 0
  • onBlur = 1
  • OnChange = 2
  • OnClick = 3
  • onDblclick = 4
  • onDragdrop = 5
  • onError = 6
  • onFocus = 7
  • onKeydown = 8
  • onKeypress = 9
  • onLoad = 10
  • onMouseOver = 11
  • onMouseOut = 12
  • onReset = 13
  • onResize = 14
  • onSelect = 15
  • onSubmit = 16
  • onUnload = 17
  • End Enum
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Permet d'initialiser ....
  • ''' </summary>
  • ''' <param name="Writer"> Writer du Controle sur lequel
  • ''' on veut modifier les parametres
  • ''' </param>
  • ''' <param name="UniqueID"> Identifieur unique du controle
  • ''' pour pouvoir créer les fonctions javascript
  • ''' </param>
  • ''' <remarks>
  • ''' </remarks>
  • ''' <history>
  • ''' [DURAND Cyril] 30/03/2004 Created
  • ''' </history>
  • ''' -----------------------------------------------------------------------------
  • Public Sub New(ByVal Writer As System.Web.UI.HtmlTextWriter, ByVal UniqueID As String)
  • _UniqueID = UniqueID
  • _Writer = Writer
  • End Sub
  • #Region "Evenement"
  • ''' Chaque méthode permet d'ecrire une ligne de code
  • ''' Dans les evenements choisis pour le controle
  • Public Sub onAbort(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onAbort) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onBlur(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onBlur) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub OnChange(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.OnChange) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub OnClick(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.OnClick) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onDblclick(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onDblclick) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onDragdrop(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onDragdrop) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onError(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onError) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onFocus(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onFocus) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onKeydown(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onKeydown) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onKeypress(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onKeypress) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onLoad(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onLoad) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onMouseOver(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onMouseOver) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onMouseOut(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onMouseOut) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onReset(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onReset) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onResize(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onResize) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onSelect(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onSelect) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onSubmit(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onSubmit) &= "{|||}" & LigneCode
  • End Sub
  • Public Sub onUnload(ByVal LigneCode As String)
  • aLignesCode(NomCodeEvenement.onUnload) &= "{|||}" & LigneCode
  • End Sub
  • #End Region
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Permet d'ecrire le code Javascript au controle
  • ''' Cette methode genere un code javascript <>
  • ''' par controle et se place juste avant celui ci
  • ''' </summary>
  • ''' <remarks>
  • ''' /!\ a optimisé
  • ''' </remarks>
  • ''' <history>
  • ''' [DURAND Cyril] 30/03/2004 Created
  • ''' </history>
  • ''' -----------------------------------------------------------------------------
  • Public Sub EcrireJavascript()
  • ''' On Ecrit le debut du code javascript
  • _Writer.WriteLine("<script language=javascript>")
  • ''' On Effectue une boucle pour chaque evenement
  • For i As Integer = 0 To 17
  • ''' On Ecrit du code seulement s'il y en a
  • If Not aLignesCode(i) = "" Then
  • ''' On Ecrit le nom de la function javscript
  • ''' en fonction du nom de l'evement declenche
  • ''' et de l'identificateur unique du controle concerné
  • _Writer.WriteLine("function " & CodeEvenement(i).ToString & _UniqueID & "(){")
  • ''' A chaque ligne de code on ecrit la ligne de code
  • ''' Verifier si il n'y a pas d'erreur sur certains char
  • For Each s As String In Split(aLignesCode(i), "{|||}")
  • '''On Ecrit seulement si la ligne
  • ''' n'est pas vide ....
  • If Not s = "" Then
  • _Writer.WriteLine(s)
  • End If
  • Next
  • ''' On Ferme la fonction javascript avec
  • ''' l'accolade fermante
  • _Writer.WriteLine("}")
  • End If
  • Next
  • ''' On Ferme le bloc de script
  • _Writer.WriteLine("</script>")
  • End Sub
  • End Class
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.Webcontrols
Imports System.Web

Namespace Cyril
    Namespace Controls

                Public Class EcrireEvenementJavascript

                    Private _UniqueID As String
                    Private _Writer As System.Web.UI.HtmlTextWriter

                    ''' -----------------------------------------------------------------------------
                    ''' <summary>
                    ''' Contient toutes les lignes de codes
                    ''' pour chaque Evenement
                    ''' A un index est associé un evenement
                    ''' le numero de l'index est ecrit dans CodeEvenement
                    ''' 
                    ''' Chaque ligne de code est séparé par {|||}
                    ''' </summary>
                    ''' <remarks>
                    ''' </remarks>
                    ''' <history>
                    ''' 	[DURAND Cyril]	30/03/2004	Created
                    ''' </history>
                    ''' -----------------------------------------------------------------------------
                    Private aLignesCode(17) As String

                    ''' -----------------------------------------------------------------------------
                    ''' <summary>
                    ''' Un Array qui contient les codes des evenements
                    ''' </summary>
                    ''' <remarks>
                    ''' </remarks>
                    ''' <history>
                    ''' 	[DURAND Cyril]	30/03/2004	Created
                    ''' </history>
                    ''' -----------------------------------------------------------------------------
                    Private CodeEvenement() As String _
                            = {"onAbort", "onBlur", "OnChange", _
                            "OnClick", "onDblclick", "onDragdrop", _
                            "onError", "onFocus", "onKeydown", _
                            "onKeypress", "onLoad", "onMouseOver", _
                            "onMouseOut", "onReset", "onResize", _
                            "onSelect", "onSubmit", "onUnload"}

                    Private Enum NomCodeEvenement As Short
                        onAbort = 0
                        onBlur = 1
                        OnChange = 2
                        OnClick = 3
                        onDblclick = 4
                        onDragdrop = 5
                        onError = 6
                        onFocus = 7
                        onKeydown = 8
                        onKeypress = 9
                        onLoad = 10
                        onMouseOver = 11
                        onMouseOut = 12
                        onReset = 13
                        onResize = 14
                        onSelect = 15
                        onSubmit = 16
                        onUnload = 17
                    End Enum

                    ''' -----------------------------------------------------------------------------
                    ''' <summary>
                    ''' Permet d'initialiser ....
                    ''' </summary>
                    ''' <param name="Writer">   Writer du Controle sur lequel 
                    '''                         on veut modifier les parametres
                    ''' </param>
                    ''' <param name="UniqueID"> Identifieur unique du controle
                    '''                         pour pouvoir créer les fonctions javascript
                    ''' </param>
                    ''' <remarks>
                    ''' </remarks>
                    ''' <history>
                    ''' 	[DURAND Cyril]	30/03/2004	Created
                    ''' </history>
                    ''' -----------------------------------------------------------------------------
                    Public Sub New(ByVal Writer As System.Web.UI.HtmlTextWriter, ByVal UniqueID As String)
                        _UniqueID = UniqueID
                        _Writer = Writer
                    End Sub

#Region "Evenement"
                    ''' Chaque méthode permet d'ecrire une ligne de code
                    ''' Dans les evenements choisis pour le controle
                    Public Sub onAbort(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onAbort) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onBlur(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onBlur) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub OnChange(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.OnChange) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub OnClick(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.OnClick) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onDblclick(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onDblclick) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onDragdrop(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onDragdrop) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onError(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onError) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onFocus(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onFocus) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onKeydown(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onKeydown) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onKeypress(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onKeypress) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onLoad(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onLoad) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onMouseOver(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onMouseOver) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onMouseOut(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onMouseOut) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onReset(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onReset) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onResize(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onResize) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onSelect(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onSelect) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onSubmit(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onSubmit) &= "{|||}" & LigneCode
                    End Sub
                    Public Sub onUnload(ByVal LigneCode As String)
                        aLignesCode(NomCodeEvenement.onUnload) &= "{|||}" & LigneCode
                    End Sub
#End Region

                    ''' -----------------------------------------------------------------------------
                    ''' <summary>
                    ''' Permet d'ecrire le code Javascript au controle
                    ''' Cette methode genere un code javascript <>
                    ''' par controle et se place juste avant celui ci
                    ''' </summary>
                    ''' <remarks>
                    ''' /!\ a optimisé
                    ''' </remarks>
                    ''' <history>
                    ''' 	[DURAND Cyril]	30/03/2004	Created
                    ''' </history>
                    ''' -----------------------------------------------------------------------------
                    Public Sub EcrireJavascript()

                        ''' On Ecrit le debut du code javascript
                        _Writer.WriteLine("<script language=javascript>")

                        ''' On Effectue une boucle pour chaque evenement
                        For i As Integer = 0 To 17

                            ''' On Ecrit du code seulement s'il y en a
                            If Not aLignesCode(i) = "" Then

                                ''' On Ecrit le nom de la function javscript
                                ''' en fonction du nom de l'evement declenche
                                ''' et de l'identificateur unique du controle concerné
                                _Writer.WriteLine("function " & CodeEvenement(i).ToString & _UniqueID & "(){")

                                ''' A chaque ligne de code on ecrit la ligne de code
                                ''' Verifier si il n'y a pas d'erreur sur certains char
                                For Each s As String In Split(aLignesCode(i), "{|||}")
                                    '''On Ecrit seulement si la ligne 
                                    ''' n'est pas vide ....
                                    If Not s = "" Then
                                        _Writer.WriteLine(s)
                                    End If
                                Next

                                ''' On Ferme la fonction javascript avec
                                ''' l'accolade fermante
                                _Writer.WriteLine("}")
                            End If
                        Next

                        ''' On Ferme le bloc de script
                        _Writer.WriteLine("</script>")

                    End Sub

                End Class

 Conclusion

Bug :
- Il me reste encore à integrer certaines chose dans la classe comme la vérification pour savoir si j'ai deja ecrit ou pas dans l'attribut en cours

- Il manque une methode pour tout simplement generer une fonction javascript sans association avec un evenement du controle

- Pour l'instant les evenements se font sur tout les controles meme sur ceux ou l'evenement est impossible par exemple par exemple le dragdrop sur une image qui n'a alors aucun sens voir : http://www.commentcamarche.net/javascript/jsevent. php3

J'ai fournit dans le zip une assembly contenant egalement mes controles dérivé et le code avec le code d'un bouton

Pour avoir une version de l'assembly la plus recente veuillez consulter cette adresse : http://jesusonline.free.fr/Cyril/

Hesiter pas à me mettre un commentaire bon ou mauvais du moment qu'il est constructif et me noter, si vous ameliorer le truc dites le moi

 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) CUSTOM USER CONTROL COLLECTION par ranouf
Source avec Zip Source .NET (Dotnet) COMPACTER DU JAVASCRIPT par jesusonline
Source avec Zip Source avec une capture Source .NET (Dotnet) WEBCONTROL WYSIWYG POUR ASP.NET par Yxion
Source avec Zip Source avec une capture ANTIBOT par ghuysmans99
INCLURE UNE LIBRAIRIE par Warwick

 Sources en rapport avec celle ci

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) WEBCONTROL DATEPICKER WEBCONTROLLIBRARY par fredzool
Source avec Zip Source .NET (Dotnet) COMPACTER DU JAVASCRIPT par jesusonline
Source avec Zip Source .NET (Dotnet) NOUVEAU BUTTON : BUTTONUNIQUE par jesusonline

Commentaires et avis

Commentaire de MOOKIES le 20/03/2007 23:13:56

Salut Jesus,
je te trouve un peu dure de mettre sa comme source debutant,
j etais en train de faire la meme chose en C#, et c 'est pas si evident.

Mais heuresement jesus as toujours fait ce que je veut faire, et ce code vb m'a permit de finir
Superbe source, encore merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment accèder à un WebControl à l'intérieur d'un content (en javascript)? [ par edge_man ] J'aimerai pouvoir acc&#233;der en javascript &#224; un WebControl (une TextBox) situ&#233; dans un Content. Ce Content est utilis&#233; parce que j'a lire un .gif dans les webressources avec javascript [ par fredzool ] dans mon webcontrol http://www.aspfr.com/codes/WEBCONTROL-DATEPICKER-WEBCONTROLLIBRARY_48850.aspxj ai un calendrier en javascriptje ne ASP.Net Server Control - Enregistrement d'un fichier javaScript [ par billou_13 ] Bonjour,Je m'en remet à vous pour m'aider à résoudre un petit problème.Je développe actuellement une librairie de "Server Control" pour une appli Web. MultiSelection avec javascript dans une GridView [ par nerone21 ] Bonjour,codage en asp.netJ'ai un 'ti problème dans une gridview:j'ai un script en javascript qui sert à colorer ou décolorer des lignes que l' utilisa CustomValidator et ClientValidationFunction en javascript [ par jocou ] Bonjour à tous Je veux implémenter dans mon projet un contrôle de saisie côté client. J'utilise donc (pour la 1ere fois) un CustomValidator et une fo Problème de javascript images aléatoires sous IE [ par weiwuwei ] Bonjour, Et merci de m'accueillir ! J'ai réalisé un script pour des images aléatoires sur une page, tous fonctionne bien sous firefox et chrome, mai javascript dans un updatepanel [ par dragon ] Bonjour, j'ai un petit problème avec un code javascript qui se trouve dans un updatepanel. Pour faciliter la tache, le panel se trouve dans un AjaxCo Preloader javascript [ par RenzoThil ] Bonjour à tous, Voici mon problème: J'ai un div qui contient beaucoup de contenu. Conclusion, il met du temps à s'afficher (3 à 4 secondes) J'aimera problème javascript avec W3C Validator [ par Jojo092 ] Bonjour, je travaille sur un projet dont toutes les pages doivent être validée par le Validator W3C... J'ai donc une fonction en javascript qui ne pas UpdatePanel et callback d'une chart s'arretent de fonctionner apres l'execution d'un code javascript [ par waelyh ] Bonjour tout le monde, je suis entrain d'appeler une fenêtre popup a partir d'une page aspx appelé "page1.aspx" en utilisant le code C# suivant: [co


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

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,671 sec (3)

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