Datagrid, Update ligne par ligne

Résolu
cs_Lyche Messages postés 49 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 27 novembre 2007 - 5 juil. 2007 à 10:19
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011 - 5 juil. 2007 à 18:31
Bonjour a vous.
Voilà, je suis ce que l'on peu appeler un débutant en VB.net et je me retrouve avec un gros logiciel a développer pour mon entreprise.
Mon gros problème actuellement se situe sur une datagrid que j'arrive a remplir, mais je voudrais savoir si il y avait moyen de mettre des textbox dans cette datagrid, et donc de pouvoir les modifier et faire une update ligne par ligne en cliquant sur un bouton généré dans le datagrid, si oui, ca serai avec joie que j'accepterais toute aide pour ce code.
Amicalement, Lyche !

3 réponses

TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
5 juil. 2007 à 13:56
la datagrid est fait pour gerer cette fonctionnalité
la modification est possible et via des evenement tu peux traiter uen pré validation de mise a jour dans la table mémoire en question et post validation tu peux specifié la mise a jour depuis cette table memoire vers la Bdd
pour cela il y a une classe qui fait le relais entre la BDD et ton appli
suivant si tu appel le ".Fill()" qui remplis une table coté mémoire dans ton prog depuis la bdd ou ".Update()" qui met a jour la BDD depuis la table mémoire (DataTable en l'occurence) via les commande designé
je te presente le "DataAdapter"
suivant si tu choisit une SqlConnection, OleDbConnection ... choisit le SqlDataAdapter, ect ... allant avec :)
pour cette liaison le DataAdapter fait pas de la magie il a besoin que tu lui explicite comment faire cette liaison, ceci se fait a l'instanciation en spécifiant tout d'abord la connexion a laquel il se rattache (Sqlconnection ect ...)
puis il a besoin de savoir quelle table, champ ect ... pour la mise a jour "descendante" (SQL=>DataTable)
pour cela 2 Solutions : soit dans l'instanciation ya un paramètre "SelectCommand" soit apres l'instanciation en remplissant le champ :
MonDataAdapter.SelectCommand avec un objet "SqlCommand" qui explicit la maniere de selection des donnée :
exemple =>
MonDataAdapter.SelectCommand = New SqlCommand("SELECT * FROM Table", MaConnexionSql)
(ou une procedure stocké)
dim MaSelectCommand as New SqlCommand()
MaSelectCommand.Connection = MaConnexionSql
MaSelectCommand.CommandType=  StoredProcedure
MaSelectCommand.Text = "toto" 'si la procedure s'apelle toto
MonDataAdapter.SelectCommand = MaSelectCommand

bon ca c'est fait ensuite tu apelle le ".Fill()" a chaque fois que tu doit mettre al DataTable (donc la Datagrid) a jour sur ton prog

sauf que juste apres l'initialisation il faut que tu configure de maniere similaire les champ :
DeleteCommand <=== commande de requete SQL pour supprimé une ligne
InsertCommand <=== commande SQL d'insertion de ligne
UpdateCommand <=== commande SQL pour une modification de ligne

pour ces 3 la la difficulté augmente un peu, en effet tu devra utiliser les requete parametre en specifant par exemple la valeur de la clé primaire qu'il sache de quelle ligne il s'agit lors de la suppresion ou de la modification et en plus pour la methode Update command il faudfra aussi paser des parametre pour l'ancienne et la nouvelle valeur de chaque champ qu'il sache ce qu'il met a jour.

(sur ce il est 14 heure je doit retourné bossé je te laisse au joie de msdn et de lire al doc)
avec Sql :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdatasqlclientsqlcommandclasstopic.asp
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdatasqlclientsqldataadapterclasstopic.asp
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdatasqlclientsqldataadapterclasstopic.asp
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdatasqlclientsqldataadapterclassupdatecommandtopic.asp
...
TeBeCo
cs_Lyche Messages postés 49 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 27 novembre 2007
5 juil. 2007 à 14:56
Merci bien pour la réponse !
complèxe mais complète. Ce fût fort instructif et ca me servira dans le futur !
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
5 juil. 2007 à 18:31
je t'en prix la première fois j'ai pas mal galéré alors ca fait plaisir d'aider un peu
bonne continuation sous .net

TeBeCo
Rejoignez-nous