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

Windows Forms Discussion :

XML et datagridview


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Points : 563
    Points
    563
    Par défaut XML et datagridview
    Bonjour à tous,

    J'ai une base de données en XML que je charge dans un dataset.
    Pour afficher les données, je peux soit passer par un bindingSource, soit passer par du code en dur ou je reprends toutes les colonnes.

    Lorsque je code en dur, une colonne apparait en plus de la solution par binding (Eleve_id).
    J'aurais justement besoin de récuperer cet identifiant. Mais la solution par bindings me plait plus car je ne veux pas que cette information apparaisse dans ma grille.

    Comment puis-je récupérée cet info dans mon datagrid créé par un BindingSource ?

    En espérant avoir été clair,

    N. Bauland

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Mais la solution par bindings me plait plus car je ne veux pas que cette information apparaisse dans ma grille
    Une fois le binding fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyGridView.Columns["Eleve_id"].Visible=false ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre confirmé
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Points : 563
    Points
    563
    Par défaut
    Justement cette colonne n'apparait déjà pas ...
    Elle n'existe pas en passant par un binding, pourtant, il doit bien y avoir moyen de récupérer cette valeur, elle existe dans la table sous jacente.

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Quel est le code du binding ?
    Utilises-tu MyDatagridview.AutoGenerateColumns = true ?
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre confirmé
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Points : 563
    Points
    563
    Par défaut
    En effet la propriété est à true.
    Plus exactement, je ne l'ai pas placée à true, mais elle semble l'être par défaut.
    Si je la place à false, je n'ai aucune colonne créée, si je la place à false, les colonnes sont créées sauf celle qui représente la clef (qui est celle dont l'information m'intéresse justement).

    Pour l'instant je suis parvenu a récupéré cette info, mais probablement pas de la manière la plus propre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string key =  (dataGridView.CurrentRow.DataBoundItem as DataRowView).Row.ItemArray[2].ToString();
    En effet, le 2 je l'ai trouvé grace au debuggeur, mais je prefererais un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string key =  (dataGridView.CurrentRow.DataBoundItem as DataRowView).Row.ItemArray["Eleves_id"].ToString();
    voir même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string key =  dataGridView.CurrentRow["Eleves_id"].ToString();

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour,

    si j'ai bien compris, le Xml comprend au moins deux tables, celle à afficher dans le DGV et celle comprenant les identifiants entre autre et partant du principe qu'il devrait ressembler à ça :

    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
    <?xml version="1.0" standalone="yes"?>
    <ElevesInfo>
     
      <TablePourDgv>
        <EleveNom>Tata</EleveNom>
        <Note1>10</Note1>
        <Note2>12</Note2>
      </TablePourDgv>
      <TablePourDgv>
        <EleveNom>Tete</EleveNom>
        <Note1>1</Note1>
        <Note2>0</Note2>
      </TablePourDgv>
      <TablePourDgv>
        <EleveNom>Titi</EleveNom>
        <Note1>5</Note1>
        <Note2>12</Note2>
      </TablePourDgv>
     
      <TableSousJacente>
        <Eleves_id>1</Eleves_id>
        <EleveNom1>Tata</EleveNom1>
      </TableSousJacente>
      <TableSousJacente>
        <Eleves_id>5</Eleves_id>
        <EleveNom1>Tete</EleveNom1>
      </TableSousJacente>
      <TableSousJacente>
        <Eleves_id>10</Eleves_id>
        <EleveNom1>Titi</EleveNom1>
      </TableSousJacente>
     
    </ElevesInfo>
    On peut récupérer d'identifiant d'un élève en cliquant sur son nom depuis le DVG, par une fonction qui créé une vue personnalisée en mémoire (DataView dv) de la TableSousJacente, pour y chercher cet identifiant :
    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
        Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
     
            If DataGridView1.CurrentCellAddress.X.Equals(DataGridView1.Columns("EleveNom").Index) _
            And DataGridView1.CurrentCell.Value IsNot DBNull.Value Then
                FindValueInDataView(dst.Tables("TableSousJacente"), "EleveNom1", "Eleves_id", DataGridView1.CurrentCell.Value)
            End If
        End Sub
     
        Private Sub FindValueInDataView(ByVal table As DataTable, ByVal colNameOuChercher As String, ByVal colNameOuTrouver As String, ByVal nom As String)
     
            Dim dv = New DataView(table)
            dv.Sort = colNameOuChercher
            Dim index As Integer = dv.Find(nom)
     
            If index = -1 Then
                MsgBox("Item Not Found")
            Else
                MsgBox(dv(index)(colNameOuTrouver).ToString() & "  " & dv(index)(colNameOuChercher).ToString())
            End If
        End Sub
    EleveNom étant la liste-noeuds des élèves dans la TablePourDgv dont on se sert pour l'affichage et EleveNom1, celle présente dans la TableSousJacente annexe.

Discussions similaires

  1. [Débutant] suppression noeud xml from datagridview c#
    Par morched89 dans le forum C#
    Réponses: 42
    Dernier message: 28/11/2012, 15h44
  2. lecture fichier xml, remplir datagridview
    Par cissoux30 dans le forum C++
    Réponses: 1
    Dernier message: 18/04/2012, 00h24
  3. Réponses: 2
    Dernier message: 28/09/2006, 09h48
  4. Réponses: 6
    Dernier message: 25/07/2006, 15h40
  5. [C#2.0]DatagridView + Chargement fichier XML
    Par chnew dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/04/2006, 12h35

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