VB.Net, refresh d'un datagridview
Utilisateur anonyme
-
FM@robaz -
FM@robaz -
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.
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:
- Vb.net datagridview refresh
- Comment refresh son pc - Guide
- Auto refresh - Télécharger - Divers Web & Internet
- Refresh dns - Guide
- Vb.net express - Télécharger - Langages
- Vb.net - Télécharger - Langages
8 réponses
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?
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?
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?
et pour te dire je concois pas bien ton problème, si tu peux étre plus claire?
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
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
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) :
la ligne
Bonne journée!
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 = vbNullest celle qui manquait pour que le refresh de la DataGridView se fasse.
Bonne journée!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
Aucune information cohérente sur les forums et sites
Je continue à tâtonner pour trouver la solution.