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 :

2 GridView et 1 seul datasource ?


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut 2 GridView et 1 seul datasource ?
    Bonjour,

    J'aimerais lier deux gridview au meme datasource.
    Dans chacun des gridview, j'affiche en fait des colonnes differentes.

    Il faut donc que les 2 gridView se rafraichisse mutuellement lorsque l'un change.
    Exemple, je trie sur une colonne dans le GridView1, j'aimerais que mon GridView2 suive pour afficher les bonnes donnees correspondantes aux nouvelles lignes...

    Jusqu'ici, j'ai mis sur l'evenement OnSorted du MainGridView ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SecondGridView.PageIndex = MainGridView.PageIndex;
    SecondGridView.Sort(MainGridView.SortExpression, MainGridView.SortDirection);
    SecondGridView.DataBind();
    Le deuxieme GridView change bien mais enfait il refait un bind sur le DataSource, donc le DataSource reexcute ma procedure stockee pour obtenir les informations. Mais les infos vont etre les memes.
    Cest donc anti-perfomance!

    Y a-t-il un moyen de rafraichir le DataSource une seule fois et que les 2 GridView l'utilise ensuite et non que chacun declenche le rafraichissement du DataSource.. ?

    Merci
    A+


    PS: j'ai fais des recherches et je voulais utiliser un DataSource au lieu du DataSourceID de cette facon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MainGridView.DataSource = MonDataSource.Select();
    MainGridView.DataBind();
    De ce fait, je pensais lier qu'une seule fois le DataSource et ensuite pouvoir l'utiliser avec differents GridView mais mon GridView est vide donc c'est comme si le Select() renvoie rien... pourquoi ?
    Si je mets DataSourceID = "MonDataSource" ca marche pourtant... donc les donnees sont bien la non ?

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Tu n'as qu'à "temporiser" tes données en les mettant dans un dataset. De plus tu peux créer deux datatables issue d'une de base provenant de ta procédure stockée. Une datatable pour chaque gridview.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    Dsl ca reste un peu flou ce que vous me dites. Si vous pouviez developper... ?

    J'utilise deja un DataTable je pense vu que je passe par une BLL et la methode GetAll de celle-ci que j'utilise dans mon ObjectDataSource renvoie bien un DataTable.
    Donc pour moi l'ObjectDataSource je le voyais deja comme la temporisation des donnees provenant de la base.

    Vous suggerez donc de ne pas utiliser d'ObjectDataSource ?

    J'ai configure mon GridView pour qu'il fonctionne avec le CustomPaging via mon ObjectDataSource.

    Est-ce que je vais devoir gerer manuellement les sorting et changement de page si je change ?

    Il n'y a donc pas moyen d'utiliser un ObjectDataSource deja complete, il va forcement refaire appel a la base si je l'utilise avec differents gridview ?

    Merci


    PS: D'ailleurs je ne comprends pas pourquoi la methode Select de l'ObjectDataSource ne fonctionne pas... je voulais faire cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MonDataSource.DataBind();
    MainGridView.DataSource = MonDataSource.Select();
    MainGridView.DataBind();
    J'avais pourtant compris que la methode Select() executait le select de lObjectDataSource et renvoye un dataView ou quelque chose d'IEnumerable... non ?
    Mais mon grid view reste vide.... si je passe par le DataSourceID, les donnees sont pourtant bien la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MainGridView.DataSourceID = "MonDataSource"
    Est-ce que ca pourrait etre parce que j'utilise le CustomPaging et la valeur de startRowIndex/maximumRows son nuls ?

Discussions similaires

  1. liaisons de plusieurs requêtes dans un seul DataSource !
    Par menoulette dans le forum Débuter
    Réponses: 11
    Dernier message: 21/10/2013, 11h39
  2. Multiple ComboBoxes une seul datasource
    Par spiderams dans le forum Windows Forms
    Réponses: 0
    Dernier message: 21/11/2011, 16h50
  3. Update les lignes d'une gridview en un seul clic
    Par badi3a82 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/10/2010, 11h36
  4. Réponses: 13
    Dernier message: 29/05/2008, 10h27
  5. [C# - GridView] Mode édition (sans DataSource).
    Par Taxol dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/12/2007, 00h18

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