Accueil > > > ASSOCIER DU CODE JAVASCRIPT AUX CONTROLES DERIVÉS
ASSOCIER DU CODE JAVASCRIPT AUX CONTROLES DERIVÉS
Information sur la source
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
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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éder en javascript à un WebControl (une TextBox) situé dans un Content. Ce Content est utilisé 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
|
Derniers Blogs
WP7 5K BELGIUM CHALLENGEWP7 5K BELGIUM CHALLENGE par junarnoalg
Microsoft Belgique a le plaisir de vous annoncer le lancement du
Challenge Windows Phone 7
. Celui-ci se déroule du 12 juillet au 30 novembre 2010 et vous donne l'opportunit...
Cliquez pour lire la suite de l'article par junarnoalg LES MONADES POUR LES NULSLES MONADES POUR LES NULS par mdufourneaudravel
Avec l'annonce de F#, je me suis intéressé de plus en plus à la programmation fonctionnelle, je suis donc rapidement tombé sur les " monades ", mais malgré la lecture de plusieurs articles, j'étais resté perméable à leur concept. C'est désormais fini, grâ...
Cliquez pour lire la suite de l'article par mdufourneaudravel [WP7] AJOUTER DES IMAGES DANS LA MEDIA LIBRARY D'UN WINDOWS PHONE 7[WP7] AJOUTER DES IMAGES DANS LA MEDIA LIBRARY D'UN WINDOWS PHONE 7 par Audrey
L'émulateur Windows Phone 7, fourni avec la version Beta des outils développeurs n'inclut aucune image dans sa bibliothèque. Pas très pratique de tester son application lorsque l'on souhaite que l'utilisateur puisse choisir une image présente dans le télé...
Cliquez pour lire la suite de l'article par Audrey VIVE LES MOCKS ET LES POCOSVIVE LES MOCKS ET LES POCOS par vLabz
J'observe régulièrement autour de moi de la confusion à propos de ces deux termes et j'aimerais juste rappeler ce qu'ils signifient. Je ne suis bien sûr pas le mieux placé pour faire une leçon mais je vais faire de mon mieux pour mettre en valeur ce q...
Cliquez pour lire la suite de l'article par vLabz [WF4] WORKFLOW AND CUSTOM ACTIVITIES - BEST PRACTICES (4/5)[WF4] WORKFLOW AND CUSTOM ACTIVITIES - BEST PRACTICES (4/5) par JeremyJeanson
Vendredi dernier Microsoft a publié le quatrième épisode des bonnes pratiques pour coder ses activités custom dans WF4 : endpoint.tv - Workflow and Custom Activities - Best Practices (Part 4) . Tout comme pour les précédents épisodes, j'ai pris le temps d...
Cliquez pour lire la suite de l'article par JeremyJeanson
Forum
ASP:BUTTONASP:BUTTON par ldm001
Cliquez pour lire la suite par ldm001
Logiciels
Crystal Report (11)CRYSTAL REPORT (11)Crystal Reports est un outil de reporting souple et puissant, vous pouvez très facilement consult... Cliquez pour télécharger Crystal Report Academy System (12.0.2.0)ACADEMY SYSTEM (12.0.2.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft iPod Vidéo Convertisseur 6 (6.0.3.0419)XILISOFT IPOD VIDéO CONVERTISSEUR 6 (6.0.3.0419)Xilisoft iPod Vidéo Convertisseur est un outil puissant de conversion d'iPod, facile à utiliser. ... Cliquez pour télécharger Xilisoft iPod Vidéo Convertisseur 6 Xilisoft iPhone Vidéo Convertisseur 6 (6.0.3.0419)XILISOFT IPHONE VIDéO CONVERTISSEUR 6 (6.0.3.0419)Xilisoft iPhone Vidéo Convertisseur est le meilleur logiciel de conversion iPhone qui peut facile... Cliquez pour télécharger Xilisoft iPhone Vidéo Convertisseur 6 Xilisoft iPad Vidéo Convertisseur 6 (6.0.3.0419)XILISOFT IPAD VIDéO CONVERTISSEUR 6 (6.0.3.0419)Il s'agit d'un logiciel polyvalent pour convertir les formats vidéo/audio populaires en formats p... Cliquez pour télécharger Xilisoft iPad Vidéo Convertisseur 6
|