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 :

Template control : Problème de PostBack


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut Template control : Problème de PostBack
    Bonjour,

    J'ai essayé de développer un contrôle template de type MessageBox.
    J'ai trouvé le très bon tutoriel de développez à l'adresse suivante :
    http://nico-pyright.developpez.com/t...mplatecontrol/

    Il m'a bien aidé, mais j'ai maintenant un problème que je n'avais pas réfléchi au tout départ.

    Le fonctionnement de mon contrôle :
    Les textes, boutons, ... sont ajoutés dans le CreateChildControl

    Fonctionnement de l'utilisateur :
    Il place un objet de ce contrôle dans l'ASPX, avec Visible = false, et met Visible = true lorsqu'il souhaite l'afficher et peut modifier le texte dans le code behind.

    Le texte de la MessageBox varie en fonction de certains cas (valeurs différentes en fonction des paramètres saisis).
    Par exemple : Attention, vous annulez annuler N moumoutes (où N est le résultat d'une requete lancée apres, par exemple, le clic sur le bouton "Annuler les moumoutes")

    Mon problème :
    L'évènement CreateChildControl est levé avant l'évènement de clic sur le bouton "Annuler moumoutes".
    Hors c'est ce dernier qui va mettre à jour le texte de la MessageBox.

    A l'affichage, j'ai donc un décalage de 1 postback (c'est à dire que j'ai un retard d'un cycle).


    J'ai pensé à faire un new messageBox dans le code behind mais :
    1 - comme je n'ai pas testé, je ne sais pas si ca peut fonctionner
    2 - c'est quand meme pas cool ...

    Est ce que quelqu'un pourrait me dire s'il s'agit d'une erreur de compréhension et de mise en place de mon control template ?
    Et me donner des pistes de solutions possibles ?

    Merci
    Worldofdada

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Citation Envoyé par Worldofdada Voir le message
    (c'est à dire que j'ai un retard d'un cycle).
    Faut faire attention avec des expressions comme ca...On pourait penser à autre chose!!!


  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut


    J'ai tenté de faire un new et pour le moment, ca ne fonctionne pas ... (de toute facon, cette méthode ne me plait pas vraiment, il faudrait que ce soit en cas de dernier recours)

    Par contre, j'ai trouvé une méthode qui fonctionne mais qui est franchement moche ...

    Dans mon controle :
    Création d'une méthode publique ForcerRechargement() qui appelle la méthode protected CreateChildControl

    Dans ma page :
    Appel de cette méthode après avoir changé le texte.

    C'est moche car du coup, j'appelle 2 fois la méthode CreateChildControl et je ne connais pas les impacts possibles de ce genre de rustines.

    Donc si quelqu'un avait une idée, ou deux , je suis prenneur

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut
    Personne n'aurait une petite idée ?

    J'ai trouvé une solution temporaire consistant a créer une méthode publique "ForcerRechargement()" appelant le CreateChildControl (qui est protected), mais je doute fortement de la bonne pratique ...

    Surtout que du coup, il faut bien penser à appeler cette méthode a chaque modification coté code behind ...

    Merci

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    une des solutions peut être de surcharger la méthode databind et d'appeler createchildcontrols à ce moment là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public override void DataBind()
    {
        CreateChildControls();
        ChildControlsCreated = true;
        base.DataBind();
    }
    Cela implique de faire ton alimentation par un binding

Discussions similaires

  1. [Custom control] - Javascript et postback ?
    Par Pongten dans le forum ASP.NET
    Réponses: 20
    Dernier message: 07/08/2007, 18h07
  2. [WebForms][User Controls] Problème pour accéder aux CSS
    Par BouB dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 04/12/2006, 16h35
  3. Réponses: 4
    Dernier message: 10/11/2006, 15h33
  4. [VB]Défilement de controles, problèmes de capacité
    Par flogreg dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 13/02/2006, 17h19
  5. [MFC]List Control : problème d'affichage
    Par gege2061 dans le forum MFC
    Réponses: 5
    Dernier message: 25/07/2005, 13h40

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