nixounet
Messages postés17Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention 2 avril 2007
-
12 mars 2007 à 13:12
hicham_899 -
28 juin 2007 à 16:13
Bonjour,
J'aimerais faire monter ou decendre les enregistrements dans un datagrid en pressant sur des boutons.
j'arrive à récupérer la valeur de l'index de ma ligne, mais comment faire pour lui attribuer une autre valeur par la suite?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 13 mars 2007 à 11:00
Bon, voila un petit bout de code effectif pour un bouton "descendre"
Il faut donc ajouter une colonne "Position" a ta Table.
Il faut aussi que la propriété "Sort" de la vue affectée a ton DataGridView soit "Position" (pour qu'il rearrange les lignes triées par position)
<hr />
Ensuite, pour enregistrer les changements dans ta bdd, tu appeles la méthode Update de ton TableAdapter en lui passant ton DataSet en parametre. Et le tout est joué :)
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 12 mars 2007 à 13:31
Salut,
Pourquoi tu utilises la méthode ToString() sur ton index pour le caster en int ensuite ? Index est deja de type int ;)
Sinon pour changer la positionnne d'une ligne, tu peux utiliser les méthode RemoveAt() et Insert() de ta collection de Rows.
nixounet
Messages postés17Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention 2 avril 2007 12 mars 2007 à 14:28
ca veut dire que je suis obligé de faire une série de requette? je ne peut pas travailler en local sur mon datagrid?
et sinon comment puis-je faire pour que mon DataGrid ne soit pas litmité?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 12 mars 2007 à 17:11
Non en fait si j'ai bien compris il souhaite changer l'emplacement de certaines lignes, et pas changer de ligne.
Mais jusque la je vois pas trop ce qui ne va pas dans la méthode proposée.
Si ton DataGridView est bindé à une List<> par exemple, tu peux utiliser les méthode RemoveAt et Insert de ta liste.
Ensuite, dans le même formulaire, j'ai un bouton et j'aimerais que lorsque je presse ce bouton, mon enregisrtement dans mon DataGrid decende d'une case.
et là si je fait bs.MoveNext ca ne marchera pas...
mais j'ai sur dgMenu.Rows.Insert(iIndexArrive, dgMenu.Rows[iIndexDepart]); Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.
nixounet
Messages postés17Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention 2 avril 2007 12 mars 2007 à 17:26
Le but étant la gestion dynamique d'un menu, donc les liens enregistrés dans une base de donnée, sont afficher dans mon DataGrid comme il sont enregistrés dans ma base.
Puis j'aimerais que l'utilisateur puisse sans autre les faires montrer ou décendre et pour finir les enregistrer dans la base comme ils les a disposé dans le DataGrid..
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 13 mars 2007 à 09:50
C'est justement le principe du mode déconnecté, il charge les données dans ton dataSet puis se deconnecte, et se reconnecte quand tu veux procéder a une mise a jour de tes données.
Mais jusque là, je ne te suis pas. Parce qu'une fois tes lignes echangées, meme si tu veux sauver leur position dans la base de données, elle reapparaitront de nouveau dans le meme ordre.
Ce qu'il faut, c'est que tu aies une colonne contenant la position de la ligne dans ton menu, et que tu changes ce nombre via le clic du bouton, puis que tu retries ta vue.
Si ce n'est pas le but recherché, alors je pense qu'il va nous falloir plus d'explications ;)