IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Confirmer un Submit Seulement quand cas particulier


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 38
    Points
    38
    Par défaut Confirmer un Submit Seulement quand cas particulier
    Bonjour,


    Alors je realise une page ou le client doit entrée 2 valeurs (Valeur indiquée, Valeur mesurée)
    et je souhaite faire un Pop Up de confirmation OK/ANNULER si et seulement si les 2 valeurs entre elles sont hors normes (Par example: Tolerance de 5 de difference, Valeur mes = 5 et Valeur indiq = 11, c'est un hors norme)

    j'ai actuellement ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
                           protected void BTN_envoiecalib_Click(object sender, EventArgs e)
            {
                GC.Formok(valeurs); //Vérifie si les Champs sont bien remplis, sinon met en surbrillance les champs oubliés
     
                bool formok;
                formok = GC.Formok(valeurs); //return True si les Champs sont bien remplis
     
                if (formok)
                {
                    bool BoolHN = true;
                    float V1 = Convert.ToSingle(TXTB_Val_indiq.Text.Replace('.', ','));
                    float V2 = Convert.ToSingle(TXTB_Val_mes.Text.Replace('.', ','));
                    float V3 = Convert.ToSingle(LBL_Tol_Min.Text); //Valeur de la tolerance
     
                    if (LBL_Unit_Max.Text == "%") //ceci inclus LBL_Unit_Mini aussi || Effectue un calcul par rapport au %
                    {
                        float result = ((V1 - V2) / ((V1 + V2) / 2) * 100);
     
                        if (Math.Abs(result) <= V3)
                        {
                            BoolHN = false;
                        }
     
                    }
                    else //Effectue un calcul par rapport à une tolérance d'un entier
                    {
                        float result = V1 - V2;
                        if (Math.Abs(result) <= V3)
                        {
                            BoolHN = false;
                        }
                    }
     
                    if (BoolHN) //Si les valeurs submit sont Hors normes.
                    {
                        ClientScript.RegisterStartupScript(typeof(Page), "exampleScript", "if(confirm('Confirmez vous que la valeur à envoyer est belle et bien Hors Normes ?'))", true);
                    }
     
                }
            }


    Le pop up apparait bien grace a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       if (BoolHN) //Si les valeurs submit sont Hors normes.
                    {
                        ClientScript.RegisterStartupScript(typeof(Page), "exampleScript", "if(confirm('Confirmez vous que la valeur à envoyer est belle et bien Hors Normes ?'))", true);
                    }
    Mais le probleme, c'est que le code n'attend pas la réponse du client et continue a compiler
    Ce que je souhaite faire, c'est que la compilation se mette en pause, attende la reponse du client et SI REPONSE CLIENT == OK => je passe a la suite SINON => j'annule le Submit.

    Comment je peux faire ca ?

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Il faut que tu mettes ton "Confirm" côté client sur le OnClick de ton bouton Submit avant d'envoyer la réponse au serveur.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:ImageButton ID="btnDelete" runat="server" ImageUrl="~/Images/Actions/delete.png" ToolTip="Suppression"
                                 OnClientClick="return confirm('Etes-vous sûr(e) de vouloir supprimer ?');" Width="25px"  OnClick="btnDelete_Click" />
    Seb

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Le probleme c'est que je doit Submit, PUIS verifier si une valeur est hors normes, PUIS envoyer le message de confirm SI ET SEULEMENT SI la valeur est hors normes.


    Je ne peux pas faire afficher un message de confirmation "souhaitez vous envoyer ces valeurs malgrés qu'elles soient hors normes" alors que le calcul n'as pas encore etais fait.

    Mais je vais essayer un truc, c'est de creer un bouton factice caché et faire générer le Onclick du cote serveur.

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Pourquoi dois-tu faire le calcul de tolérance côté Serveur ?
    Tu as des valeurs en base, dans un fichier de conf ?

    Vu le code que tu as donné, tout est dans ta page, tu peux donc faire tes calculs en JS côté Client et afficher la question.


    Seb

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Je n'ai fait que tres peu de JS,
    et je me retrouve bloqué à ce niveau la.


    Ce que je souhaite exactement c'est:



    -J'appuie sur le submit
    -un Calcul se produit
    -Un boolean detecte si le calcul est hors normes
    -Si il est Hors normes, envoyer message de confirmation savoir si on force l'ajout dans la base de donnée // Sinon on annule le reste du submit.

    Le probleme c'est que je peux pas utilise le ONCLICK car le message de confirmation ne doit pas se faire lors du submit, mais apres le click et avant l'envoie dans le base de données.


    Apres si il y a un moyen en JS de: recuperer les champs de données de Textboxs, comparé entre elle les valeurs et attribué un evenement onclick en fonction de la valeur retournée, je suis preneur mais je sais pas comment m'y prendre.

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Dit au fait, on parle bien de dev Web ASP.NET ? Demande à déplacer ton sujet, pour ne pas se mélanger les pinceaux.

    Tu reprends mon exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Button ID="btnDelete" runat="server" Text="Valider" OnClick="btnDelete_Click" OnClientClick="return confirm('Etes-vous sûr(e) de vouloir supprimer ?');" />
    Et tu remplaces le "confirm" par un fonction JS à toi et avec un de JQuery tu retranscris ton code VB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Button ID="btnDelete" runat="server" Text="Valider" OnClick="btnDelete_Click" OnClientClick="return ValeursHorsNorme($('#TXTB_Val_indiq').text, $('#TXTB_Val_mes).text);" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function ValeursHorsNorme(v1, v2) {
       var min = $('#LBL_Tol_Min').text;
       var max = $('#LBL_Unit_Max').text;
       var horsNorme = true;
       var retour = false;
     
    ....
     
       if (horsNorme) { retour = confirm('Etes-vous sûr(e) de vouloir supprimer ?'); }
     
    return retour ;
    }

    Ça donne une petite idée de la chose.


    Seb

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <script type="text/javascript">
       function ValeursHorsNorme(v1, v2, v3, v4) {
       var indiq = $('#TXTB_Val_indiq').text;
       var mes = $('#TXTB_Val_mes').text;
       var unit = $('#LBL_Unit_Max').text;
       var tol = $('#LBL_Tol_Min').text;
       var BoolHn = true;
       var retour = false;
     
       if (((indiq != 0) && (mes != 0))) {
     
           if (unit == "%") {
               var result = ((indiq - mes) / ((indiq + mes) / 2) * 100);
     
               if (abs(result) <= unit) {
                   BoolHN = false;
               }
     
           }
           else //Effectue un calcul par rapport à une tolérance d'un entier
           {
               var result = indiq - mes;
               if (abs(result) <= unit) {
                   BoolHN = false;
               }
           }
       }
       else { BoolHN = false }
     
       if (horsNorme) { retour = confirm('Etes-vous sûr(e) de vouloir supprimer ?'); }
     
       return retour;
            }
     
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <asp:Button ID="BTN_envoiecalib" runat="server" Text="Envoyer Calibration" OnClick="BTN_envoiecalib_Click" OnClientClick="return ValeursHorsNorme($('#TXTB_Val_indiq').text, ($('#TXTB_Val_mes).text), ($('#LBL_Unit_Max').text), ($('#LBL_Tol_Min').text);" />
    j'ai ca et rien ne fonctionne :/
    En plus programmer sans debuggeur dans un langage que je ne connait pas, c'est mission impossible...

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Qu'est que tu obtiens ?
    Erreur ? Un submit de ta page ?

    En Jquery, "$('#TXTB_Val_indiq')" recherche une balise HTML donc l'ID vaut exactement "TXTB_Val_indiq".
    En Asp.NET, l'ID d'une balise est la concaténation de la page, du userControl ou autre repeater, JQuery ne trouvera jamais tes 4 champs texte.
    Ajoute une classe CSS sur tes champs texte juste pour la recherche (en JQuery, "$('#TXTB_Val_indiq')").

    Pour le débuguage, tu as le ALERT ou la console du navigateur (console.log("Toto")).



    Seb

  9. #9
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Citation Envoyé par yinyang Voir le message
    Qu'est que tu obtiens ?
    Ajoute une classe CSS sur tes champs texte juste pour la recherche (en JQuery, "$('#TXTB_Val_indiq')").
    Pour sélectionner une balise à partir d'une classe CSS, ce n'est pas le "#" mais "." (Je pense que c'est une erreur de copier/coller ).

    Pour debuger du JS. Cela ce passe dans ton navigateur grâce à "F12".
    Pour faciliter la gestion du DOM dans mon exemple j'ai utilisé JQuery.

    Exemple html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Debug</title>
    	<script src="https://code.jquery.com/jquery-2.1.1.js"></script>
    </head>
    <body>
    	<label ID="monLabel" class="lblTest">Le texte de mon label</label>	
    </body>
    </html>
    Dans le debuger dans l'onglet "Console" :
    En se basant sur l'ID de ma balise
    $("#monLabel").text()
    Résultat : "Le texte de mon label"
    ------
    En se basant sur une classe de ma balise
    $(".lblTest").text()
    Résultat : "Le texte de mon label"

    Nom : Debug.jpg
Affichages : 120
Taille : 52,6 Ko


    Par contre en ASP.net les ID ne sont pas forcement les ID que tu as mit dans ton code...
    Si tu veux éviter ce problème dans ta balise tu peux utiliser : ClientIdMode="Static"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Label ID="monLabel" runat="server" ClientIDMode="Static">Static</asp:Label>
    Ici l'id de ton label sera "monLabel" et non quelque-chose comme cela : "ctl00_MainContent_monLabel".

Discussions similaires

  1. Problème de confirmation de formulaire seulement sur IE
    Par navis84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/04/2006, 09h45
  2. Réponses: 27
    Dernier message: 12/01/2006, 11h04
  3. cas particulier agaçant
    Par devdébuto dans le forum C
    Réponses: 17
    Dernier message: 13/12/2005, 23h45
  4. Enregistrement courant après refresh [cas particulier]
    Par say dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo