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
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.
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
Code behind et javascript [ par emalio13 ]
Bonjour à toutes et à tous,Etant débutante en ASP.net, je rencontre quelques difficultés.En effet, je développe une application avec visual web develo
web service [ par verbeyst ]
Bonjour,Je voudrais "générer"/ "écrire " un formulaire qui stocke le username et le passwd et qui appele un web service tout en passant ces valeurs en
galerie photo PHP vs JAVASCRIPT [ par kataVB ]
boujour tout le mondeje suis entrain ecrire un programme pour realiser une galerie de photo pour un site web. J'ai commencé de programmer en javascrip
ASP.NET / XML / Javascript : stocker un javascript dans xml [ par anai ]
Bonjour,Voici mon probleme : J'ai une webforms dans lequel en ligne je mets un javascript (style Google Analytics). Je veux stocker ce javscript dans
Récupérer le texte modifié par Javascript en ASP [ par sspizer ]
Bonjour à tous, J'ai un petit soucis pour récupérer le texte qui à été modifié par du javascript en asp. Voila en gros ce que je fais: Code ASP: <a
ACCESS et php, Javascript, ASP.... [ par I_am_Bibou ]
Mesdames, Messieurs Bonjours.Ne sachant pas ou poster ce sujet je le poste ici.J'ai développer une base de donnée ACCESS avec tout ce qui va avec (éta
Problème Textbox Effacées en Javascript côté Client mais pas côté serveur [ par vinzemuls ]
BOnjour,voilà j'ai un bouton qui me permet d'effacer des textboxs en JAVASCRIPT qui s'éxecute correctement. le problème est que lorsque je souhaite en
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
AFFICHER PRIXAFFICHER PRIX par linea26
Cliquez pour lire la suite par linea26
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|