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

ASP.NET Discussion :

[C#] commandes qui ne se déroule pas dans le bon ordre


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut [C#] commandes qui ne se déroule pas dans le bon ordre
    Bonjour,

    Ce titre est un peu flou mais le débutant que je suis ne sais pas comment résumer ce problème autrement.

    Tout d'abord, voilà mon code allégé au maximum pour se focaliser sur mon problème:

    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
    // Directives
    using System;
    using System.Web.UI.WebControls;
     
    public partial class _Default : System.Web.UI.Page
    {
    	protected void Page_Load(object sender, EventArgs e)
    	{
    	}
     
        public void Button_cmd(Object sender, CommandEventArgs e)
        {
            // switch de couleur
            if (Test_Popup.BackColor == System.Drawing.ColorTranslator.FromHtml("#F1F1F1"))
                Test_Popup.BackColor = System.Drawing.ColorTranslator.FromHtml("#A60000");
            else
                Test_Popup.BackColor = System.Drawing.ColorTranslator.FromHtml("#F1F1F1");
     
            // sleep
            int compteur = 0;
            while (compteur != 3)
            {
                System.Threading.Thread.Sleep(1000);
                compteur += 1;
            }
        }
    }
    Et mon problème est tout simple:

    Je n'ai pas de changement de couleur AVANT le sleep. Il arrive toujours après, je ne comprends pas pourquoi ça ne s'exécute pas dans l'ordre où c'est écris.

    C'est surement une question de méga débutant et je m'en excuse mais je n'ai pas trouvé la réponse sur le net donc je sors mon petit panneau 'HELP' ici...

    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    tu as essayé d'afficher ta test_popup entre ta condition et ton sleep
    pour visualiser ta popup ?

    car dans ta méthode tu affectes la couleur à ta popup et tu ne l'affiches pas

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Car c'est de l'asp.net !

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Points : 83
    Points
    83
    Par défaut
    Salut, c'est tout à fait logique,
    quand tu cliques sur le bouton ta page est envoyée au serveur pour effectuer ton traitement et ce n'est qu'à la fin du traitement (Button_cmd) que la page va être rechargée et les modifications prendront place.

    peux tu expliquer ce que tu veux faire exactement ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par lerieure Voir le message
    Bonjour,

    tu as essayé d'afficher ta test_popup entre ta condition et ton sleep
    pour visualiser ta popup ?

    car dans ta méthode tu affectes la couleur à ta popup et tu ne l'affiches pas
    Merci pour ta réponse,

    Ma popup est déjà affichée mais tu penses peut-être à une commande en particulier que je pourrais ajouter pour forcer son affichage/refresh?

    J'ai essayé de mettre ma condition (switch de couleur) dans mon while mais ça ne change pas: mon switch de couleur se fait à chaque boucle mais seule la dernière couleur s'affiche. Pendant le while, pas de refresh...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par ilya-bhn Voir le message
    Salut, c'est tout à fait logique,
    quand tu cliques sur le bouton ta page est envoyée au serveur pour effectuer ton traitement et ce n'est qu'à la fin du traitement (Button_cmd) que la page va être rechargée et les modifications prendront place.

    peux tu expliquer ce que tu veux faire exactement ?
    Bonjour ilya-bhn,

    J'aimerais que mon switch de couleur s'exécute ET s'affiche avant que je n'entre dans ma boucle.

    Merci

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    il faut que tu fasse le changement de couleur en javascript comme ça le changement de couleur s’exécute immédiatement au click sur le bouton

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    il faut que tu fasse le changement de couleur en javascript comme ça le changement de couleur s’exécute immédiatement au click sur le bouton
    J'y ai pensé mais j'aimerais évité le javascript.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    il faut que tu fasse le changement de couleur en javascript comme ça le changement de couleur s’exécute immédiatement au click sur le bouton
    Pour être plus précis, tu fais de l'asp.net là. Donc ton code C# va s'exécuter coté serveur. La page sera retournée qu'à la fin de l'exécution du code du bouton (donc tu ne verras que la dernière couleur).

    Il faut donc exécuter le code coté client et là comme dit, ça va être du javascript.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par ostenhard Voir le message
    Pour être plus précis, tu fais de l'asp.net là. Donc ton code C# va s'exécuter coté serveur. La page sera retournée qu'à la fin de l'exécution du code du bouton (donc tu ne verras que la dernière couleur).

    Il faut donc exécuter le code coté client et là comme dit, ça va être du javascript.
    Arf... J'imagine que c'est une problématique récurrente de l'ASP.NET donc il y a peut être une solution de contournement non?

    Ou alors avec un module AJAX?

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    je sais que l'utilisation du javascript est rebutante mais bon c'est un passage obliger en asp surtout pour faire des modifications d'interface instantanées (j'ai dû passé par là moi aussi )

  12. #12
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par Jxxx7 Voir le message
    Arf... J'imagine que c'est une problématique récurrente de l'ASP.NET donc il y a peut être une solution de contournement non?

    Ou alors avec un module AJAX?
    Ben oui! Le Javascript! (D'ailleurs AJAX c'est du Javascript)

  13. #13
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Points : 83
    Points
    83
    Par défaut
    Salut tu peux essayer une fonction javascript du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function testColor() {
                var popup = document.getElementById('Test_Popup');
                if (popup.style.background == 'white') {
                    popup.style.background = 'red';
                }
                else {
                    popup.style.background = 'white';
                }           
            }
    et dans ton bouton ajoute l'attribut OnClientClick="testColor();" et n'oublie pas d'enlever le traitement du code behind.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par ilya-bhn Voir le message
    Salut tu peux essayer une fonction javascript du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function testColor() {
                var popup = document.getElementById('Test_Popup');
                if (popup.style.background == 'white') {
                    popup.style.background = 'red';
                }
                else {
                    popup.style.background = 'white';
                }           
            }
    et dans ton bouton ajoute l'attribut OnClientClick="testColor();" et n'oublie pas d'enlever le traitement du code behind.
    Bon bah puisque tout le monde me pousse au javascript, j'ai l'impression que je n'ai pas d'autres solutions que de m'y mettre!

    Comme si c'était pas déjà assez difficile pour moi d'apprendre l'ASP.NET... lol

    Alors voilà ce que j'ai fait, dites moi où est l'erreur car ça ne fonctionne pas:

    j'ai ajouté la fonction testColor() à mon .aspx.

    j'ai mis ma fonction entre ces deux balises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    ...
    </script>
    j'ai remplacé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oncommand="Test_Button_cmd"
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnClientClick="testColor();"
    et j'ai viré mon switch de couleur dans mon .aspx.cs

    Or quand je clique sur mon bouton, rien ne se passe :/

  15. #15
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Points : 83
    Points
    83
    Par défaut
    Et bien tout ne marche pas du premier coup
    si non il faut pas enlever ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oncommand="Test_Button_cmd"
    car l'idée est d'ajouter un traitement du côté client(onClientClick) en plus du traitement côté seveur, et ton pop up, est ce que c'est une div ??
    est ce que tu peux postuler l'ensemble de ta page ??

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    OK Voilà mon Default.aspx, ultra simplifié pour rester focalisé sur mon problème:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    <%@
    	Page Language="C#"
    	MasterPageFile="~/MasterPage.master"
    	AutoEventWireup="true"
    	CodeFile="Default.aspx.cs"
    	Inherits="_Default"
    	Theme="Default"
    	Title="Page de test pour developpez.net :)"
    %>
     
    <asp:content contentplaceholderid="CPH_Test" runat="server">
     
    <script language="javascript" type="text/javascript">
    	function testColor()
    		{
    		var popup = document.getElementById('Test_Popup');
    		if (popup.style.background == 'white')
    			{
    			popup.style.background = 'red';
    			}
    		else
    			{
    			popup.style.background = 'blue';
    			}
    		}
    </script>
     
    	TEST<br />
     
    	<asp:Panel
    		runat="server"
    		id="Test_Popup"
    		text="Test_Popup"
    		cssclass="Test_Popup"
    		Visible="true"
    		>
    	</asp:Panel>
     
    	<form runat="server">
    	<asp:Button
    		runat="server"
    		id="Test_Button"
    		cssclass="Test_Button"
    		text="OK"
    		OnClientClick="testColor()"
    		/>
    	</form>
     
    </asp:content>

  17. #17
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    var popup = document.getElementById('Test_Popup');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var popup = document.getElementById('<%= Test_Popup.ClientID %>');

  18. #18
    Membre régulier
    Inscrit en
    Octobre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 59
    Points : 88
    Points
    88
    Par défaut
    Tu peux aussi affecter les couleurs dans ton bouton et rappeler direct la page pour quelle fasse le traitement, les couleurs seront présentes et la page ne seras rafraîchi qu'à la fin du traitement.

    Avec une condition dans Session pour savoir si t'es sur le bon PostBack ça devrais le faire non ?

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par roro06 Voir le message
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var popup = document.getElementById('<%= Test_Popup.ClientID %>');
    Merci mais toujours pas... ma popup reste blanche :/

    beurk javascript!

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    En faisant des tests je m'aperçois qu'en appliquant un fond noir à la page ça fonctionne mais ça redevient blanc immédiatement, bizarre! C'est peut être pour la même raison que je n'arrive pas à modifier ma popup non?

    J'ai juste remplacé:
    var popup = document.getElementById('Test_Popup');
    popup.style.background = 'black';
    par:
    document.bgColor = 'black';
    une idée? je craque!

Discussions similaires

  1. lesaffichages ne se font pas dans le bon ordre
    Par xokami35x dans le forum AWT/Swing
    Réponses: 15
    Dernier message: 18/08/2008, 13h00
  2. Macro qui ne s'exécute pas dans formulaire
    Par picatchou dans le forum Access
    Réponses: 10
    Dernier message: 18/09/2006, 17h27
  3. Page PHP qui ne s'affiche pas dans le site
    Par cyberdevelopment dans le forum Langage
    Réponses: 2
    Dernier message: 11/08/2006, 11h49
  4. excel: colonne qui ne s'affiche pas dans une liste
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2006, 18h12
  5. Champs qui ne s'affichent pas dans formulaire
    Par capitaine dans le forum Access
    Réponses: 1
    Dernier message: 02/06/2006, 15h00

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