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 :

passage de paramètres entre web user control


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut passage de paramètres entre web user control
    Bonjour,
    je suis confronté à ce problème depuis un petit bout de temps et je sèche!!!
    Voila: j'ai 2 WebUser Control permettant de gérer une liste de contacts.
    le premier, "WUCGestionContacts" contient une girdview avec tous les contacts. Un template sous forme d'un imageButton doit permettre d'afficher l'autre webUser Control "WUCDetailsView" contenant un detailsView du contact. J'ai créé un event pour récupérer le clic sur l'ImageButton "btnViewDetails".
    J'ai également donné une propriété à mes WUC afin qu'ils se transmettent l'identifiant du contact sélectionné:

    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
    public String m_WUCGestionContactModifID
        {
            get
            {
                if (ViewState["CONTACT"] != null)
                {
                    return Convert.ToString(ViewState["CONTACT"]);
                }
                else return "";
            }
            set
            {
                ViewState["CONTACT"] = value;
            }
        }
    Comme je ne peux pas mettre "enable selection=true" dans le gridviewContact, je récupère la ligne sélectionnée puis l'identifiant du contact sur le rowCommand:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void GridViewContacts_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            GridViewRow selectedRow = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
            int i = selectedRow.RowIndex;
            string Id = GridViewContacts.DataKeys[i].Values[0].ToString();
            m_WUCGestionContactModifID = Id;
        }

    Voila comment je voudrais que ca marche:

    Page Principale:
    J'affiche ma gridview de contacts, je clic sur l'imageButton,

    WUC GestionContact:
    je récupère l'identifiant du contact, je le met dans la propriété m_WUCGestionContactModifID,je lève l'event "btnViewDetails_Click1",

    Page Principale:
    la méthode btnViewDetails_Click1 est appelée, passe l'identifiant au WUC DetailsView, affiche le WUCDetailsView.

    WUCDetailsView:
    une DetailsView s'affiche contenant les détails du contact (plus des boutons permettant la modification, suppression, etc du contact)

    Et voila comment ca se passe en vrai:
    Page Principale:
    J'affiche ma gridview de contacts, je clic sur l'imageButton,

    WUC GestionContact:
    je lève l'event "btnViewDetails_Click1",

    Page Principale:
    la méthode btnViewDetails_Click1 est appelée sans avoir encore l'identifiant
    , affiche le WUCDetailsView

    WUC GestionContact:
    l'event "GridViewContacts_RowCommand" est levé, récupère l'identifiant et le met dans la propriété.

    Mon problème est donc de trouver un moyen pour récupérer la ligne sur laquelle on a clické/sélectionnée avant le lancement de la méthode "btnViewDetails_Click1" et sans la sélection automatique...
    Je n'y arrive pas..

    J'ai essayé de respecter les règles, j'espère que c'est le cas et que ça reste compréhensible...
    Merci de votre aide, je suis vraiment bloqué...

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Je n'ai pas tout compris à ce que tu veux faire mais au niveau du gridview tu as une méthode onselectedindexchanged et selectedindexchanging.

    Avec ces 2 méthodes tu peux récupérer la ligne sélectionnée.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    oui, mais le problème avec ces événements, dans mon cas, c'est qu'ils sont déclenchés APRÈS l'évenement onClick...
    Voila mon code par ordre chronologique pour être plus clair:

    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
    50
    ///1/
    /// <summary>
        /// Déclaration des délégués
        /// </summary>
        public delegate void ViewDetailClickHandler(object sender, EventArgs e);
     
    protected void Page_Load(object sender, EventArgs e)
        {
     //.........
        }
     
    ///on clic sur l'imageButton pour afficher la detailsView:
     
    ///2/
     
        /// <summary>
        ///  Déclaration des évènements qui utilisent ces délégués
        /// </summary>
     
        public event ViewDetailClickHandler BoutonViewDetailsClick;
     
    protected void btnViewDetails_Click1(object sender, ImageClickEventArgs e)
        {
            OnBoutonViewDetailsClick(e);
        }
     
    ///3/ 
        protected virtual void OnBoutonViewDetailsClick(EventArgs e)
        {
            if (BoutonViewDetailsClick != null)
            {
                BoutonViewDetailsClick(this, e);
            }
        }
     
    ///4/Dans la page principale: cette méthode doit être capable, à ce moment de récupérer l'identifiant pour le passer au WUCDetailsView..
     
     void ButtonViewDetails_Click(Object sender, EventArgs e)
        {
     //......
        }
     
    //5/ et on repart dans le WUCGestion des contact pour l'event selectedIndex... Un peu trop tard...:
     
        protected void GridViewExploitants_SelectedIndexChanged(object sender, EventArgs e)
        {
    int i = GridViewExploitants.SelectedIndex;
            string Id = GridViewExploitants.DataKeys[i].Values[0].ToString();
            m_WUCGestionContactModifID = Id;
        }
    il faut donc que j'arrive à récupérer la ligne avant toutes les méthodes lancant l'event click....

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    S'il vous plait, quelqu'un aurait une idée, une piste...?

    Sinon, il me reste la solution d'utiliser des div visible/invisible et avoir ainsi ma gridview et ma detailsView dans le même WebUser Control.
    Ça simplifie les probleme de comunication mais je ne trouve pas ça très élégant...

  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
    Points : 16 075
    Points
    16 075
    Par défaut
    Des infos sur le cycle de vie d'une page : http://nico-pyright.developpez.com/t...prendreaspnet/

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci!!!
    J'ai finalement laissé tombé, et je vais faire un seul WebUserControl avec les deux, c'est plus simple...
    En tout cas merci pour le lien, il me servira pour ma cultureG!!

Discussions similaires

  1. [Débutant] passer des paramètres entre les User Control
    Par catty_sofi dans le forum Silverlight
    Réponses: 3
    Dernier message: 31/05/2012, 12h20
  2. passage de paramètre entre formulaire et état
    Par thufir hawat dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 22h32
  3. [C#] DateTimePicker web user control
    Par titi29 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/06/2004, 18h38
  4. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14
  5. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58

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