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 :

Gridviews en cascade


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut Gridviews en cascade
    Bonjour,

    Je développe une appli ASP/C#.NET.
    Je manipule des gridviews, mais je suis bloqué sur le pb suivant :

    Dans mon Page_load, je génère une gridview ("mère").
    Lorsque je clique sur un linkbutton de ma gridview (créé dans le rowdatabound), je remplis deux autres gridviews ;
    pour l'exemple : imaginons que la gridview principale soit une liste de marques d'ordinateurs, et les deux autres qui en dépendent, soient des listes d'écrans et d'unités centrales. Quand je choisis une marque, alors je remplis les UC et écrans de cette marque.

    Les gridviews d'écrans et d'UC contiennent elles-mêmes des linkButtons créés dans leurs méthodes RowDataBound ;
    lorsque je clique sur ces linkbuttons, je souhaite simplement être redirigé sur d'autres pages, mais rien ne se passe : la page courante se recharge, et je perds les données affichées dans les gridviews filles.


    Voici le code qui, dans le rowdatabound de mes deux gridviews "filles" crée les linkbuttons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                        LinkButton lkbAbonne = new LinkButton ();
                        lkbAbonne.Text = e.Row.Cells[0].Text;
                        lkbAbonne.Click += new EventHandler (actionDetailsAbonne);
                        e.Row.Cells[0].Text = "";
                        e.Row.Cells[0].Controls.Add (lkbAbonne);
    La fonction "actionDetailsAbonne" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                        LinkButton boutonAbonne = (LinkButton) sender;
                        string[] listeArguments = boutonAbonne.ID.Split ('|');
                        Response.Redirect ("~/abonnes.aspx?ref=" + listeArguments[1] + "&bra=" + listeArguments[2], false);




    Autre point : si je charge directement mes gridviews filles dès le page_load comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                preparerGridViewMere ();
     
                if (Request.QueryString["se"] != null) {
                    preparerGridViewFille1 (Request.QueryString["se"]);
                    preparerGridViewFille2 (Request.QueryString["se"]);
                }
    alors les linkbuttons fonctionnent.

    Donc : dans le cas où je charge un élément spécifique de ma gv mère dès l'ouverture de la page, avec un paramètre dans l'URL, tout fonctionne.
    Mais dans le cas où je sélectionne un élément de ma gv mère, alors les liens des gv fille générées ne fonctionnent pas.

    Quelque chose m'échappe dans ce système de post_back, mais après de longues séances de débug, je ne vois pas...
    Pourriez-vous me dépanner svp ?
    J'espère avoir été clair, et avoir fourni assez de code.
    Merci d'avance,

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Tu peux essayer de mettre un update Panel autour de tout tes grids.
    Quand tu cliques tu vas dans le page_load et vu que tes élements sont crées dynamiquement, je pense qu'il se perd.

    Es-tu obligé de creer ces éléments dynamiquement ? ne peux-tu pas creer des linkbutton directement dans ton grid ?
    Cela serait peut etre aussi une solution.

    Tu peux meme ouvrir une popup quand tu cliques sur ta gridview mere et donc afficher la gridview fille dans une popup puis quand tu cliques sur la popup faire un response.redirect sur la page que tu souhaites

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par TheReturnOfMuton Voir le message
    Dans mon Page_load, je génère une gridview ("mère").
    En principe ce n'est pas dans le Page_Load mais dans le Page_PreInit qu'on initialise les controls. Ensuite on fait le binding au moment du Page_Load.

    Pour référence : ASP.NET Page Life Cycle Overview.

    Quand tu debug, est-ce que tu passes dans actionDetailsAbonne lors du click sur les LinkButton ?

    Plutôt qu'un LinkButton, pourquoi ne pas utiliser un HyperLink et sa propriété NavigateUrl ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut Pb corrigé ! ☺
    Bonjour,

    Tortuegenie, j'ai d'abord essayé l'updatePanel, mais cela n'a pas corrigé mon pb.

    J'ai ensuite vu ton post, Matt, et effectivement un simple Hyperlink résout tout !
    Merci beaucoup à tous les deux pour vos infos et votre aide ! ☺
    Cordialement.

    ps : Matt : je ne passais pas dans "actionDetailsAbonne", car il devait reconstruire la page au clic.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/01/2008, 18h22
  2. Delete en cascade
    Par defrgly57 dans le forum ASP
    Réponses: 3
    Dernier message: 12/04/2004, 12h13
  3. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02
  4. delete en cascade
    Par bruno270579 dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/12/2003, 17h17
  5. suppresion en cascade + postgres
    Par bruno270579 dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/12/2003, 16h27

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