Gridview : sauvegarde automatique des lignes [Résolu]

Signaler
Messages postés
153
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
18 septembre 2009
-
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
-
Bonjour,

Dans une gridview, quand je mets une ligne en édition, je voudrais que quand je clique "Editer" sur une autre ligne que ça mette à jour la ligne courrante au lieu d'annuler les modifications (pour éviter aux utilisateurs de cliquer sur "valider" et "editer" à chaque ligne...

C'est exactement la même chose que ce post (en anglais), mais le mec n'a pas posté sa solution.

Donc si quelqu'un a une idée du bricolage que je dois faire...

Merci d'avance.

3 réponses

Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Bonjour,

Il y a peut être mieux, mais tu peux essayer de faire comme cela, sur l'événément rowcommand du gridview.

If e.CommandName = "Edit" Then
            If h1.Value <> "-1" Then
                GridView1.UpdateRow(h1.Value, False)
            End If
            h1.Value = e.CommandArgument
        Else
            h1.Value = "-1"   
End If

Où h1 est un hiddenfield dont tu as mis au préalable la valeur à -1.
La valeur de la ligne en cours d'édition est stockée dans un hiddenfield : si lors du changement de commande, la valeur de l'hiddenfield est différente de -1 est que la commande est "edit" alors la ligne qui était précédemment en édition est mise à jour, ce qui n'oblige plus à passer par le bouton de validation.
Il faut voir si ça ne pose pas de problème avec autre chose...

GGtry
Messages postés
153
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
18 septembre 2009

J'ai trouvé une solution de cet ordre : dans l'évènement RowEditing :

            if (!e.Cancel)
            {
                GridView grid = (GridView)sender;
                int originalindex = grid.EditIndex;
#if DEBUG
                System.Diagnostics.Debug.WriteLine(string.Format("RowEditing Form {0} to {1}", originalindex, e.NewEditIndex));
#endif
                if (originalindex > -1)
                {
                    grid.UpdateRow(originalindex, false);
                }
            }

Ca marche nickel à quelques détails près : ça ne marche que si je sélectionne une autre ligne pour édition.

Après, je peux améliorer pour gérer ça dans les différents évènements de la grid...

Mais en fin de compte, mon chef a décidé que ça n'allait pas... donc je vais devoir faire autrement...

@+
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Bonjour,


Tu voulais que cela marche quoi que l'on fasse ?


A la limite, si tu veux que cela soit entièrement automatique, je ne vois pas ce qui t'empêche de mettre les données de ta gridview directement dans des textbox qui pourront être édités sans qu'il y ait à cliquer sur un bouton.

GGtry