Nouveau button : buttonunique

Description

Ce controle derive de button donc possede toute ces propriétés, j'ai rajouté par contre une propriété isOneClick, qui desactive le bouton une fois cliqué.

Si cette propriété vaut true (valeur par défaut) lorsque le client aura cliqué sur le bouton il deviendra grisé jusqu'au postback ce qui evite que l'utilisateur clique plusieurs fois en attendant que la page se charge; car sinon l'action associé au bouton est effectué autant de fois que de click

à False, il n'y a aucun changement avec un bouton classique

J'ai rajouté alert qui est assez simple à comprendre ...
Je vous ai mis dans le zip, l'assembly du controle (la dll) le code du bouton est en dessous

pour utiliser le bouton, il vous suffit de copier la dll dans le dossier bin de l'application web, ensuite dans la page web vous declarer votre bouton comme cela :

<%@ Register TagPrefix="cc1" Namespace="Cyril.Controls.Webcontrols" Assembly="Cyril.Controls" %>

Pour l'ajouter dans la page il vous suffit de mettre ca
<cc1:ButtonUniqueid="ButtonUnique1" runat="server" isoneclick="true" />

pour tester le bouton je vous conseille dans votre page load d'ajouter du code qui prend du temps sinon vous n'aurez pas le temps de voir le bouton se griser

Installation sous VS.net :
Cliquer avec le bouton droit dans la boite à outil puis sur ajout/suppression de composant et aller chercher la dll, vous aurez alors la liste des controles present dans la dll, ne selectionner que ButtonUnique, les autres étant encore en cours de developpement

<b>MIS A JOUR :</b>
-30 Mars 2004 : - Grosse mis à jour consulter http://www.aspfr.com/code.aspx?ID=21583 pour mieux comprendre
- J'ai enfin mis une DLL sur le net : http://jesusonline.free.fr/Control/ consulter la pour trouver la version la plus recente

Source / Exemple :


Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.Webcontrols
Imports System.Web

Namespace Cyril
    Namespace Controls
        Namespace Webcontrols

            ''' -----------------------------------------------------------------------------
            ''' Project	 : Cyril.Controls
            ''' Class	 : Controls.Webcontrols.ButtonUnique
            ''' 
            ''' -----------------------------------------------------------------------------
            ''' <summary>
            ''' Nouveau bouton 
            ''' </summary>
            ''' <remarks>
            ''' Voir http://www.aspfr.com/code.aspx?ID=21560
            ''' </remarks>
            ''' <history>
            ''' 	[DURAND Cyril]	29/03/2004	Created
            ''' </history>
            ''' -----------------------------------------------------------------------------
            <ToolboxData("<{0}:ButtonUnique runat=server></{0}:ButtonUnique>")> _
            Public Class ButtonUnique
                Inherits System.Web.UI.WebControls.Button

                Private _isOneClick As Boolean = True
                ''' -----------------------------------------------------------------------------
                ''' <summary>
                ''' Pour que le bouton ne soit actif qu'une seule fois
                ''' </summary>
                ''' <value>Default : True</value>
                ''' <remarks>
                ''' </remarks>
                ''' <history>
                ''' 	[DURAND Cyril]	29/03/2004	Created
                ''' </history>
                ''' -----------------------------------------------------------------------------
                <Category("Autres"), _
                Description("Pour que le bouton ne soit actif qu'une seule fois")> _
                Public Property isOneClick() As Boolean
                    Get
                        Return _isOneClick
                    End Get
                    Set(ByVal Value As Boolean)
                        _isOneClick = Value
                    End Set
                End Property

                Private _Alert As String
                ''' -----------------------------------------------------------------------------
                ''' <summary>
                ''' Pour que le bouton ne soit actif qu'une seule fois
                ''' </summary>
                ''' <value>Default : True</value>
                ''' <remarks>
                ''' </remarks>
                ''' <history>
                ''' 	[DURAND Cyril]	29/03/2004	Created
                ''' </history>
                ''' -----------------------------------------------------------------------------
                <Category("Autres"), _
                Description("Message d'alert")> _
                Public Property Alert() As String
                    Get
                        Return _Alert
                    End Get
                    Set(ByVal Value As String)
                        _Alert = Value
                    End Set
                End Property

                Private _OnRollOverText As String
                ''' -----------------------------------------------------------------------------
                ''' <summary>
                ''' Le texte quand on passe la souris sur le bouton
                ''' </summary>
                ''' <value></value>
                ''' <remarks>
                ''' </remarks>
                ''' <history>
                ''' 	[DURAND Cyril]	30/03/2004	Created
                ''' </history>
                ''' -----------------------------------------------------------------------------
                <Category("Apparence"), _
                Description("Le texte quand on passe la souris sur le bouton")> _
                Public Property OnRollOverText() As String
                    Get
                        Return _OnRollOverText
                    End Get
                    Set(ByVal Value As String)
                        _OnRollOverText = Value
                    End Set
                End Property

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

                    Dim isOnClickAttributsAdded As Boolean = False
                    Dim isOnMouseOverAttributsAdded As Boolean = False
                    Dim isOnMouseOutAttributsAdded As Boolean = False

                    Dim CodeJavascript As New Controls.Utility.EcrireEvenementJavascript(writer, 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

                    If Not Me.Alert = "" Then
                        If isOnClickAttributsAdded = False Then
                            writer.AddAttribute("onclick", "self.setTimeout('OneClick" & Me.UniqueID & "();' ,1);")
                            isOnClickAttributsAdded = True
                        End If
                        CodeJavascript.OnClick("alert('" & Replace(Me.Alert, "'", "\'") & "');")
                    End If

                    CodeJavascript.EcrireJavascript()

                End Sub

            End Class
        End Namespace

    End Namespace
End Namespace

Conclusion :


Il y a un bug, c'est que je n'arrive pas à ecrire une seul fois la function javascript: en effet celle ci est rajouté à chaque appel du bouton, mais ca ne gene en rien le fonctionement.

Je compte rajouter pas mal de truc a ce bouton :

- Une propriété alert qui au click affichera le texte dans une boite de dialogue.
(Fait)

- Un boolean qui a true permetrait de desactiver apres le click meme suite à un postback

- RolloverImageUrl (c2i.fr)

- RolloverText

- Fenetre de validation

Si vous avez d'autres idée dite le moi, si vous modifiez ou ameliorer le code faites en moi part.

Cette DLL a long terme doit contenir tout les controles que je vais créer, il doit y en avoir d'autre à l'interieur mais faite pas attention à eux, car ils sont pas finis.

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

n'hesitez pas à poster vos commentaires et à me mettre une note :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.