VB.Net, refresh d'un datagridview

Fermé
Utilisateur anonyme - 5 mai 2008 à 10:27
 FM@robaz - 16 oct. 2011 à 00:19
Bonjour,

J'ai fait un DatagridView en VB.Net, j'utilise une base de données Access. Les données affichées sur l'écran se font par le biais d'un Dataset, si j'ai bien compris, il s'agit de la copie de la base de données en mémoire. C'est l'objet TableAdapter qui s'occupe de la liaison entre la base de données le dataset : en effet, une méthode Fill est appelée au début du programme pour charger le Dataset. Comme ceci :

Me.ContactsTableAdapter.Fill(Me.DemoDataSet.Contacts)

Alors la question que je me pose est : est-ce que cette méthode fill convient pour rafraîchir le dataset (et ainsi mettre à jour l'affichage sur le datagridview)? Quand on appelle cette méthode, est-ce que c'est toute la table qui est chargée en dataset?

Imaginons un cas où je dois mettre à jour toutes les 10 secondes le Datagrigview, est-ce performant d'appeler "fill" à tout bout de champ? Et si la base de données était distante? Bref, j'aimerais un peu savoir l'aspect performance, pour ne pas tout recharger si possible. J'attend quelques explications sur ces cas, si certains ont déjà développé de grosses applications avec ces méthodes.
A voir également:

8 réponses

Utilisateur anonyme
5 mai 2008 à 12:20
Bon moi j'abandonne lol. Sur plusieurs forums, depuis ce matin que je cherche, pas moyen d'avoir une explication claire...
En plus, ici aussi quelqu'un a posé la question en 2005 et toujours pas de réponse... C'est quand même fou!

Vous faites comment pour mettre à jour proprement votre Datagrid si la base de données est modifiée en dehors de l'application?
5
pour te répondre au sujet de la methode fill du dataadapter, il charge un objet dataset à partir d'une base de données. et à chaque fois que tu l'utilisera ton dataset sera recharger je veux dire surcharger c'est pourquoi tu obtienderas des doublons de tes données, donc fill ne rafraichi pas elle rempli le dataset.
et pour te dire je concois pas bien ton problème, si tu peux étre plus claire?
3
La méthode Fill ne permet pas de rafraichir la DataGridView.
Lorsque ton DataGridView est affiché et que tu veux envoyer une requête via par exemple un button, il faut refraichir le DataSet avant d'envoyer la requète et pour ça :

Private sub Button_click(ByVal ....... )
[...]
monDataSet.clear()
(Requète SQL = (ALTER Table etc etc etc.....))
[...]
End Sub
3
J'arrive peut-être en retard mais après avoir fouillé bien des forums et tourné en rond quelques heures, j'y suis quand même parvenu tout seul comme un grand ;)

Alors les méthodes Refresh() et Update() de la datagridview ne servent à rien ici, la méthode Clear() sur les rows non plus.

Voilà comme j'y suis arrivé (si ça peut aider) :

Dim myResult As MySqlDataReader
Dim myTable As New DataTable

... bla bla...
myDataGridView.DataSource = vbNull
myResult = GetDataReaderFromSQLQuery(Connection, spName, myParams)
myTable.Load(myResult)
myDataGridView.DataSource = myTable

la ligne
myDataGridView.DataSource = vbNull
est celle qui manquait pour que le refresh de la DataGridView se fasse.

Bonne journée!
1
wow! il a fallu plus de 6 ans pour qu'en fin qu'il ait quelque chose de plus ou moins logique... Merci Monsieur pour le travail... je vais assayer!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
5 mai 2008 à 12:52
Toujours personne?
0
J’ai le même problème et je tourne en rond.
Aucune information cohérente sur les forums et sites
Je continue à tâtonner pour trouver la solution.
0
Pour contourner, tu peux creer un bouton refresh qui reload ton datagrid.
0
t'es génial toi! mais refresh actualise que le controle datagrid mais pas la source de données
0
Il suffit de recharger le contenu du datagrid comme lorsque tu l'as initialisé
-1