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 :

[VB.Net] Probleme avec dialogues (confirm et alert)


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [VB.Net] Probleme avec dialogues (confirm et alert)
    Bonjour

    Je commence à développer en .NET et j'éprouve quelques difficultés avec les dialogues. J'utilise les confirm() et alert() pour effectuer une validation et confirmation avant d'exécuter toute action côté serveur par l'entremise d'un bouton submit (fonction onclick()), et jusque là, tout va bien. J'illustre donc mon problème à l'aide d'un exemple : J'aimerais apporter des suggestion à l'usager une fois le code côté serveur exécuté, selon le résultat de l'exécution. Je me suis donc crée une classe qui gère les dialogues(alert() et confirm(), voir code plus bas) avec le client à l'aide des fonctions RegisterClientScriptBlock et RegisterStartupScript. Le problème est la fonction Confirm; je désire mettre la valeur de la décision de l'usager dans un champ caché sur la page, et exécuter du code selon la décision de l'usager dans le page load(un peu comme dans la FAQ). Le problème est que le page load s'exécute avant le script, et la valeur de la décision n'est alors pas prise en charge par le page_load, elle n'est prise en charge que lors du prochain postback. J'aimerais savoir s'il existe une façon d'appeller un page_load ou d'exécuter un postback en javascript. Également, je trouve ma façon de procéder plutôt déficiante, mais c'est la seule que j'ai trouvé pour réussir à avoir un dialogue avec l'usager après l'exécution de code.

    Merci d'avance!

    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
     
    Function Alert(ByVal Msg As String, ByVal Pa As Page)
            'Script à insérer  (javascript de la fonction alert)
            Dim sb As New System.Text.StringBuilder
            sb.Append&#40;"<script language= javaScript>"&#41;
            sb.Append&#40;"<!-- " & vbCrLf&#41;
            sb.Append&#40;"	alert&#40;" & """" & Msg & """" & "&#41;;" & vbCrLf&#41;
            sb.Append&#40;"--></script>" & vbCrLf&#41;
            Pa.RegisterClientScriptBlock&#40;"Al", sb.ToString&#41;
     
        End Function
     
        Function Confirm&#40;ByVal Msg As String, ByVal TBName As String, ByVal Pa As Page&#41;
            'Script à insérer  &#40;javascript de la fonction confirm&#41;
            Dim sb As New System.Text.StringBuilder
            sb.Append&#40;"<script language= javaScript>"&#41;
            sb.Append&#40;"<!-- " & vbCrLf&#41;
            sb.Append&#40;" if&#40;confirm&#40;" & """" & Msg & """" & "&#41;&#41;" & vbCrLf&#41;
            sb.Append&#40;" &#123;document.getElementById&#40;" & """" & TBName & """" & "&#41;.value='true';&#125;" & vbCrLf&#41;
            sb.Append&#40;"	else&#123;document.getElementById&#40;" & """" & TBName & """" & "&#41;.value='false';&#125;" & vbCrLf&#41;
            'sb.Append&#40;"	location.reload;" & vbCrLf&#41;
                sb.Append&#40;"--></script>" & vbCrLf&#41;
     
    ' Pas le choix d'utiliser StartupScript car le hidden field contenant la décision ne sera pas render...
     
            Pa.RegisterStartupScript&#40;"Conf", sb.ToString&#41;
     
        End Function

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut Re: [ASPX] Probleme avec dialogues (confirm et alert)
    Citation Envoyé par crackity_jones666
    J'aimerais savoir s'il existe une façon d'appeller un page_load ou d'exécuter un postback en javascript.
    Nope.

    Également, je trouve ma façon de procéder plutôt déficiante, mais c'est la seule que j'ai trouvé pour réussir à avoir un dialogue avec l'usager après l'exécution de code.
    Manke de bol, après l'exécution du code, tu as le choix entre te débrouiller avec le javascript client, ou recharger la page si tu as besoin d'exécuter du code côté serveur. À toi de voir comment combiner ça au mieux pour ce dont tu as besoin :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    après l'exécution du code, tu as le choix entre te débrouiller avec le javascript client, ou recharger la page si tu as besoin d'exécuter du code côté serveur
    Je dois donc comprendre que ça ne se peut pas de cette façon?

    La seule solution que je vois alors serait de ne plus utiliser la fonction confirm, mais une fenêtre modale qui simule le confirm et qui transfert la valeur de la décision dans un champ caché du côté de la page parent... ainsi au moment du close de la fenêtre modale, un postback sera effectué par la page parent et la valeur sera alors prise en considération car elle aura été ajoutée par la fenêtre modale...

    Est-ce que ça a du sens? Merci d'avance!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par crackity_jones666
    Je dois donc comprendre que ça ne se peut pas de cette façon?
    Yup :)

    La seule solution que je vois alors serait de ne plus utiliser la fonction confirm, mais une fenêtre modale qui simule le confirm et qui transfert la valeur de la décision dans un champ caché du côté de la page parent... ainsi au moment du close de la fenêtre modale, un postback sera effectué par la page parent et la valeur sera alors prise en considération car elle aura été ajoutée par la fenêtre modale...
    Par exemple vi. Mais si tu as juste besoin de la valeur de retour du confirm, tu devrais pouvoir tout faire d'un coup dans le onclick de ton bouton. Le confirm, le stockage du résultat dans un champ caché et le form.submit()

    Mais de toute façon, y a pas le choix. Si tu as besoin d'un traitement côté serveur, il faut lui rendre la main, et ça passe par un rechargement de la page :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Mais si tu as juste besoin de la valeur de retour du confirm, tu devrais pouvoir tout faire d'un coup dans le onclick de ton bouton. Le confirm, le stockage du résultat dans un champ caché et le form.submit()
    Je ne suis pas certain de m'être bien exprimé....

    Il y a déjà un confirm dans le onclick() de mon bouton qui fonctionne très bien. C'est le deuxième confirm provenant de ma fonction VB appellé à la fin de mon form submit dont je ne peux retrouver le résultat.

    En gros j'ai donc:
    1) OnClick du bouton possède un confirm déterminant si l'usager veut bien effectuer cette opération
    2) Le code associé au bouton sur le serveur s'exécute alors si le premier confirm est affirmatif
    3) à la fin de l'exécution du code sur le serveur, j'appelle ma fonction confirm() en vb selon le résultat de l'action effectué, qui ajoute du code javascript à la fin de la page exécutant un autre confirm. C'est la valeur de ce confirm que je ne peux retrouver car il s'exécute après le pageload et qu'aucun rechargement n'est possible...

    Désolé pour les imprécisions, je cherches toujours comment il serait possible d'effectuer un rechargement après la décision prise par l'usager lors du deuxième confirm.

    Merci beaucoup pour l'aide rapide Maniak, c'est très apprécié

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bon...

    J'ai essayé plein de trucs et rien à faire, il n'est toujours pas possible d'y aller de cette façon.

    Voici ma nouvelle solution : Il s'agit de créer une nouvelle form qui gère le dialogue avec l'usager. Cette form sera appellé à la fin du code sur le serveur par un registerclientscript qui popera une fenêtre modale(va savoir pourquoi, un windows.open normal est bloqué par ma barre de popups google). La form simule un dialogue confirm, mais possède également du code derrière les boutons sur le serveur. C'est ce code qui réagira à la décision de l'usager et non plus le page_load de la page appellante. Bon, ça fait un peu plus de forms dans le projet (surtout qu'une fenêtre modale doit se trouver dans un frame, sinon beaucoup de difficultées en postback et en fermeture, et ce frame réfère à la form qui simule le confirm) mais les specs se doivent d'être respectées!

    PS : Voici une suggestion pour ceux qui cherchent des outils pour les dialogues en .NET : http://www.metabuilders.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Probleme avec controle Listbox ??
    Par Aspic dans le forum VB.NET
    Réponses: 4
    Dernier message: 10/11/2005, 14h30
  2. [ADO.NET] Problème avec Insert dans base de données
    Par mpascolo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2005, 10h36
  3. [VB.NET] Probleme avec les fichiers!!
    Par ludovic85 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/01/2005, 18h12
  4. Réponses: 2
    Dernier message: 02/09/2004, 18h38

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