ok, si tu essayes de charger tes données dans dt comme ceciça donne quoi ? (ajout de Copy)
Code : Sélectionner tout - Visualiser dans une fenêtre à part dt.Rows.Add(m_dsWebs.Tables(4).Copy.Select(dvNames.RowFilter))
ok, si tu essayes de charger tes données dans dt comme ceciça donne quoi ? (ajout de Copy)
Code : Sélectionner tout - Visualiser dans une fenêtre à part dt.Rows.Add(m_dsWebs.Tables(4).Copy.Select(dvNames.RowFilter))
est-ce que pae hasard, la table source aurait des relations avec d'autres tables dans son DataSet ?
parce que comme on a copié la structure de la table source avec .Clone, on a aussi copié les relations...
et comme dt, elle, n'est pas affectée au DataSet, peut-être que .Net y perd un peu ses petits...
TEST :
essaie d'ajouter dt au même DataSet que la Table source... pour voir...
Je vois pas trop pourquoi faire :essaie d'ajouter dt au même DataSet que la Table source... pour voir...
non aucune relation
Code : Sélectionner tout - Visualiser dans une fenêtre à part est-ce que pae hasard, la table source aurait des relations avec d'autres tables dans son DataSet ?
c'était pour le cas où la table source aurait eu des relations... pour qu'elles soient également respectée avec dt...
mais là je dois avouer que je commence à sécher... je suis désolé...
Au vu de ton code je me demandes bien pourquoi tu veux à tout prix passer par un DataView
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 filtre As String = " not WebDomainName = etc..." MonDataGrid.DataSource= m_dsWebs.Tables(4).Select(filtre)
Salut,
je ne peux pas changer directement le datasource de ma grille, elle se trouve dans un autre form.
Ce que je cherche a faire c'est passer un sous-ensemble de mon datatable au constructeur du form qui contient la grille. Pas compliqué normalement sauf que là ça pose probleme... (voir les messages précédents).
Ayant plutôt l'habitude de fonctionner avec une couche d'accès aux données séparée de la couche graphique avec exposition du resultat sous la forme d'un DataSet accessible à toutes les forms. Je ne vois pas comment cela serait simple pour toi :Envoyé par graphicsxp
Tu as un seul dataset accessible depuis toutes tes forms ? Non, pas possible de faire ça, trop de changement. Par contre je sépare bien l'acces aux données de l'affichage graphique, mais par form.
Sinon la form qui connait Ta source est-elle aussi celle qui appelle la nouvelle Form car dans ce cas elle pourrait très bien lui fournir (dans un constructeur surchargé par exemple la reference de cette source)
graphicsxp :
et depuis où est-ce tu appelle ta Form contenant le DataGrid ?
depuis "l'appelant" tu n'as pas accès à ta table ? alors comment veux-tu lui passer des données via le constructeur ?
Oui et c'est exactement ce que je fais. Je lui passe la source dans le constructeur. Tout ce que je veux, c'est lui passer la source moins les données filtrées par le filtre.Envoyé par neguib
Comme je te l'ai dit inutile de passer par un dataviewEnvoyé par graphicsxp
fait ton select sur la datatable concernée avant l'appel et transmet uniquement la nouvelle collection de Rows
Oui, mais quelle est la bonne syntaxe ? Car, Select retourne un Datarow() et on ne peut pas assigner un Datarow() a un Datatable.
Peux-tu tester stp de mettre directement un Array en datasourceEnvoyé par graphicsxp
Pourquoi un array? Il faudrait un array a plusieurs dimensions car j'ai plu d'une colonne dans ma grid.
En tout cas ça ne peut pas marcher car je n'utilise pas la Grid Microsoft, et en source je ne peux avoir qu'un datatable, dataview ou dataset.
là je ne comprends plus !!!!Envoyé par graphicsxp
tu veux passer QUOI à ton contructeur (donc à ton DataGrid) ?
les Rows résultant du filtre OU les rows originales MOINS les Rows résultant du filtre ?
parceque là tu nous demande l'inverse qu'au début du Post...
Non je demande la meme chose :
Je veux passer à mon constructeur, un datatable contenant les données du datatable original moins les données rejetées par le filtre.Bonjour,
J'ai filtré un datatable avec dataview. Maintenant je veux passer les enregistrements du dataview a un datagrid.
OK, excuse-moi, je voulais être sûr... je me marchais un peu dessus là...
alors si on repart dans nos bonnes vieille méthodes du début du Post, mais en ne copiant pas les Rows depuis la vue, amis depuis la table source (toujours DT = Table cible) ?
Puis tu passes DT à ton constructeur... ça nous donne quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DT = m_dsWebs.Tables(4).Clone For Each dr As DataRow In m_dsWebs.Tables(4).Select(filtre) dr = DT.NewRow DT.Rows.Add(dr) Next
Ca me donne l'exception bien connue maintenant : This row already belong to another table (note que la row en question c'est la seule row qui me reste apres avoir appliqué le filtre).
Et dans ma datagrid j'ai 1 ligne avec dedans System.Data.DataRow.
Donc toujours au meme point
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager