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 :

DataGrid et Dataset avec relation


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Koyote
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 35
    Par défaut DataGrid et Dataset avec relation
    Bonjour,

    J'aimerais simplement affiché dans une datagrid deux tables liés avec une datarelation. Le probléme est que je n'arrive pas à faire afficher le "+", seul la table renseigné dans le DataSource s'affiche dans la grid.

    Voici le code du DataBinding :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dgtest.DataSource = dsTableContraintes.Tables[1];
    dgtest.DataMember = dsTableContraintes.Relations[0].RelationName;
    dgtest.DataBind();
    Merci

  2. #2
    Membre confirmé Avatar de Koyote
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 35
    Par défaut
    Voici un exemple que je n'arrive pas à faire fonctionner :

    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
     
    DataSet ds = new DataSet();
                DataTable dt1 = new DataTable();
                DataTable dt2 = new DataTable();
     
                DataColumn dc = new DataColumn("IDPere");
                dt1.Columns.Add(dc);
                dc = new DataColumn("NomPere");
                dt1.Columns.Add(dc);
     
                DataColumn dc2 = new DataColumn("IDPere");
                dt2.Columns.Add(dc2);
                dc2 = new DataColumn("NomFils");
                dt2.Columns.Add(dc2);
     
                for (int i = 0; i <= 4; i++ )
                {
                    DataRow dr = dt1.NewRow();
                    dr["IDPere"] = i;
                    dr["NomPere"] = "NomPere" + i.ToString();
                    dt1.Rows.Add(dr);
                }
     
                ds.Tables.Add(dt1);
     
                for (int j = 0; j <= 4; j++ )
                {
                    DataRow dr = dt2.NewRow();
                    dr["IDPere"] = j;
                    dr["NomFils"] = "NomFils" + j.ToString();
                    dt2.Rows.Add(dr);
                }
     
                ds.Tables.Add(dt2);
     
                DataRelation dar = new DataRelation("PereFils", dt1.Columns["IDPere"], dt2.Columns["IDPere"]);
                ds.Relations.Add(dar);
     
                dgtest.DataSource = ds.Tables[0];
                dgtest.DataMember = ds.Relations[0].RelationName;
                dgtest.DataBind();
    Cela n'affiche que la table père !

    Help me.

  3. #3
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Tu as deux possibilités. Soit tu te crais une autre table, soit tu fait un master detail avec deux grilles. Dans le cas, la deuxième grille sera remplie en fonction de la ligne sélectionnée dans la première

  4. #4
    Membre confirmé Avatar de Koyote
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 35
    Par défaut
    En fait deux tables sont créés. Elles sont toutes les deux liées avec une DataRelation. Cela ne suffit pas pour afficher les enregistrements fils (avec le "+")?

    Merci.

  5. #5
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Le premier problème c'est que tu risuqe d'avoir plusieurs DataRow fils associé au DataRow parent (c'est le principe du Master Detail). Si ce n'est pas le cas, on peut se demander à quoi cela te sert d'avoir deux tables. De plus, tu peux binder ta DataGridView sur une table que tu génère à la volée et que tu remplie avec les infos des 2 autres tables.

  6. #6
    Membre confirmé Avatar de Koyote
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 35
    Par défaut
    Effectivement je vais devoir afficher plusieurs fils pour un père. J'avais aussi pensé à créer un tableau html à la volée mais je vais avoir besoin des commandes "Edit" "Update" et "Cancel" uniquement pour les enregistrements fils.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/11/2007, 12h04
  2. [VB.NET] Alimenter un dataset avec une chaine XML...
    Par David.V dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/05/2004, 09h09

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