IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Pile pour annuler ?


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Par défaut Pile pour annuler ?
    Bonjour,

    J'aimerais utiliser une pile pour stocker les opérations et pouvoir annuler étape par étape.

    Tout d'abord, j'ai deux GridView et je permet de transférer d'un GridView à un autre avec deux boutons (-> et <-). Les deux sont liés à des datatables comme datasource. Les boutons permettent d'enlever et d'ajouter une Row dans mes datatables selon ceux qui ont été sélectionnées. Voici leur code :

    Bouton Droit (->)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     Protected Sub btnDroit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDroit.Click
            Dim iCptSelect As Integer
     
            For iCptSelect = gvElementsCandidats.Rows.Count - 1 To 0 Step -1
                If CType(gvElementsCandidats.Rows(iCptSelect).Cells(0).FindControl("chkSelect"), CheckBox).Checked = True Then
                    CType(gvElementsCandidats.Rows(iCptSelect).Cells(0).FindControl("chkSelect"), CheckBox).Checked = False
                    dtCouplages.Rows.Add(cbElements.SelectedValue, gvElementsCandidats.Rows(iCptSelect).Cells(1).Text, False, "", _
                                gvElementsCandidats.Rows(iCptSelect).Cells(2).Text)
                    dtElements.Rows.RemoveAt(iCptSelect)
                End If
            Next
            Session("dvElements") = dtElements.DefaultView
            Session("dvCouplages") = dtCouplages.DefaultView
     
            MAJGridView()
        End Sub
    Bouton Gauche (<-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
        Protected Sub btnGauche_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGauche.Click
            Dim iCptSelect As Integer
     
            For iCptSelect = gvElementsSelect.Rows.Count - 1 To 0 Step -1
                If CType(gvElementsSelect.Rows(iCptSelect).Cells(0).FindControl("chkSelect"), CheckBox).Checked = True Then
                    CType(gvElementsSelect.Rows(iCptSelect).Cells(0).FindControl("chkSelect"), CheckBox).Checked = False
                    dtElements.Rows.Add(gvElementsSelect.Rows(iCptSelect).Cells(1).Text, gvElementsSelect.Rows(iCptSelect).Cells(2).Text)
                    dtCouplages.Rows.RemoveAt(iCptSelect)
                End If
            Next
            Session("dvElements") = dtElements.DefaultView
            Session("dvCouplages") = dtCouplages.DefaultView
     
     
            MAJGridView()
        End Sub
    Je me demandais qu'est-ce que je devrais stocker dans la pile pour pouvoir annuler étape par étape.

    Merci,

    Évans

  2. #2
    Membre Expert
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Par défaut Re: Pile pour annuler ?
    Citation Envoyé par evans
    Je me demandais qu'est-ce que je devrais stocker dans la pile pour pouvoir annuler étape par étape.
    Évans
    Tout simplement les choses dont tu as besoin pour annuler chaque étape !

    Le mieux étant de créer une classe ou une structure dont les instances seront ajoutées dans une liste. Chaque instance contient les infos nécessaire à l'annulation d'une manip. Quand tu annules tu prends le dernier élément de la liste et tu décrémente la taille de celle ci.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Par défaut
    Bonjour,

    Présentement, j'ai réussi à faire quelque chose qui fonctionne, mais je stocke les datatables présentement... et je ne crois pas que ça soit très optimal au niveau application Web.

    Mais, je me demandais comment est-ce que je pourrais stocker une opération qui prends en compte une multisélection, par exemple :

    Je sélectionne deux items dans la première liste et les transfère dans l'autre liste.

    Ainsi, si j'annule, il faudrait que les deux items retournent dans la première liste.

    Merci,

    Évans

  4. #4
    Membre Expert
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Par défaut
    Pour l'annulation de plusieurs actions qui doivent être vues comme une seule manipulation : il faut stocker chaque action élémentaire, séparément, en leur attribuant un même "numéro d'action" (un entier incrémenté à chaque nouvelle action). L'annulation devient un peu plus compliqué mais à peine : tu prends la dernière action à annuler et tu conserves dans un coin son "numéro d'action". Tu l'annules, puis tu reviens sur le sommet de la pile pour contrôler si la dernière entrée porte le même "numéro d'action". Si oui tu boucles sur la séquence, si non, l'annulation est terminée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. La commande pour annuler subst
    Par amine_en_france dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 05/10/2007, 16h54
  2. [compilateur g++]options pour annuler les warnings
    Par Gotmere dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 31/03/2007, 11h32
  3. Comment faire pour annuler des ajouts en cas de problème ?
    Par Cazaux-Moutou-Philippe dans le forum WinDev
    Réponses: 2
    Dernier message: 24/11/2006, 14h40
  4. Réponses: 1
    Dernier message: 11/10/2006, 13h26
  5. [VB6] Comment faire pour annuler la saisie dans un combobox ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 14/06/2006, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo