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 :

[vb.net] convertir dataview -> datatable


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut [vb.net] convertir dataview -> datatable
    Bonjour,
    J'ai filtré un datatable avec dataview. Maintenant je veux passer les enregistrements du dataview a un datagrid. Je pourrais simplement mettre la source du datagrid a ce dataview, mais je ne pourrais pas utiliser GetChange pour détecter les changements fait dans la grid.
    Comment donc convertir ce dataview en datable, pour que je mette la source de ma grid a ce datable?

    Merci

  2. #2
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maNouvelleDataTable = cType(maDataView, DataTable)

  3. #3
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    Non ca ca ne peut pas marcher, on ne peut pas caster un dataview en datatable

  4. #4
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    oups, pardon j'ai été un peu vite !

    et en bouclant sur la vue ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Dim DT As New DataTable
            Dim dv As New DataView
            Dim dvr As DataRow
            Dim DT2 As New DataTable
     
            dv.Table = DT
     
            For Each dvr In dv
                DT2.Rows.Add(dvr)
            Next

  5. #5
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    il faudrait que je fasse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each dvr as datarowview in dv
    DT2.Rows.Add(directcast(dvr, datarow))
    next
    mais ce cast est invalide

  6. #6
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    Ha j'ai trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each dvr as datarowview in dv 
    DT2.Rows.Add(dvr.row) 
    next
    mais la j'ai l'exception:
    This row already belongs to another table

  7. #7
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    et si tu passe par un DataRow intermédiaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            For Each dvr In dv
                Dim tmpRow As DataRow
                tmpRow = dvr.Row
                DT2.Rows.Add(tmpRow)
            Next
    ça donne quoi ?

  8. #8
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    ca donne exactement la meme exception

  9. #9
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    OK, alors essayons autre chose...
    si DT est toujours la table originale et DT2 la table cibe, et dv la DataView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DT2.Rows.Add(DT.Select(dv.RowFilter))
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DT2.Rows.Add(DT.Select(dv.RowFilter).Clone)
    je ne sais pas si il faut utiliser le "Clone" ou pas dans ce cas...

  10. #10
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    avec clone, erreur de compilation

    sans clone, exception:

    Input array is longer than the number of columns in this table

  11. #11
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    alors, c'est que les 2 DataTables n'ont pas la même structure...
    sinon je ne vois pas comment il y aurait une différence dans le nombre de colonnes...

    tu est certains de la structure de la 2ème DataTable ?

  12. #12
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    ben non ils n'ont pas la meme structure puisque DT2 est un nouveau datatable
    dim DT2 as new datatable

    Comment le créer et lui donner la meme structure sans les données que DT ?

  13. #13
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845

  14. #14
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    Bon c'est mieux mais c'est pas encore ca car mon nouveau datatable (DT2) contient la valeur "System.Data.DataRow" à la place de la bonne valeur... on a du faire une erreur...

  15. #15
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Citation Envoyé par graphicsxp
    Bon c'est mieux mais c'est pas encore ca car mon nouveau datatable (DT2) contient la valeur "System.Data.DataRow" à la place de la bonne valeur... on a du faire une erreur...
    euuuhhh je comprends pas... tu vois ça où ?
    qu'appelle tu "la bonne valeur" ?

  16. #16
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    ?dt.Rows(0).Item(0)

    "System.Data.DataRow" {String}
    String: "System.Data.DataRow"

    ca devrait etre "www.unsite.com", qui est la chaine filtrée par le select.

    d'ailleur le select renvoie:

    ?m_dsWebs.Tables(4).Select(dvNames.RowFilter)
    {Length=1}
    (0): {System.Data.DataRow}

  17. #17
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    c'est étrange... tu est sûr que tu as bien inséré les DataRows dans DT2 ?
    et pas le "ToString" de ces Rows ?


    mais je ne vois pas d'où peux provenir l'erreur sinon...

    TEST :
    essaye de mettre en vitesse un petit datagrid sur une form, et d'y mettre DT2 en tant que DataSource... on verra bien ce que ça affiche comme contenu de la Table

  18. #18
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    TEST :
    essaye de mettre en vitesse un petit datagrid sur une form, et d'y mettre DT2 en tant que DataSource... on verra bien ce que ça affiche comme contenu de la Table
    C'est le but.... et ca affiche bien "System.Data.DataRow".

    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim dvNames As New DataView
     dvNames.Table = m_dsWebs.Tables(4)
     dvNames.RowFilter = " not WebDomainName = 'Web Domain Names...' and not WebDomainName = ''"
      Dim dt As New DataTable
      dt = m_dsWebs.Tables(4).Clone
      dt.Rows.Add(m_dsWebs.Tables(4).Select(dvNames.RowFilter))

  19. #19
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    ok... et en mettant ta table originale en DataSource, ton DataGrid donne quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_dsWebs.Tables(4).Select(dvNames.RowFilter)
    EDIT :
    ou en mettant directement la DataView comme DataSource du DataGrid ?

  20. #20
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    en mettant ta table originale en DataSource, ton DataGrid donne quoi ?
    les bonnes données

    ou en mettant directement la DataView comme DataSource du DataGrid ?
    les bonnes données (mais je ne veux pas du dataview en datasource, tout le probleme est la)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [VB.NET] Requete sur un DataTable
    Par Vlat dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 13h53
  2. [VB.NET] Tri dans un datatable
    Par boulete dans le forum Windows Forms
    Réponses: 21
    Dernier message: 15/02/2006, 18h53
  3. [VB.Net] Convertir un nombre au format double en date
    Par Immobilis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/11/2005, 15h34
  4. [VB.NET][ADO]Fusionner des dataTables
    Par neo.51 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/07/2005, 00h22
  5. Réponses: 2
    Dernier message: 19/01/2005, 13h14

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