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

Grails Java Discussion :

Suppression Multiple avec CheckBox


Sujet :

Grails Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut Suppression Multiple avec CheckBox
    Bonjour à tous,

    Je sollicite votre aide pour un petit soucis que je rencontre
    actuellement.
    Je voudrai pour un formulaire "list.gsp" :

    - créer autant de checkbox qu'il y a d'éléments dans la table

    - créer une fonction Delete qui supprimera uniquement les éléments sélectionnés

    Mon soucis est donc de pouvoir créer une relation entre mes checkBox et une fonction "deletionGroup" que j'aurai codé dans mon controlleur ...
    Comment dire à ma fonction : Récupère les id de tous les éléments dont les
    checkBox sont cochées et supprime les.

    Je vous remercie d'avance pour vos idées et à bientôt

    St@n

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 35
    Par défaut
    Bonjour Stan

    1 - commence par ajouter un formulaire autour de ta liste en utilisant un <g:form>.

    2 - pointe l'attribut action de ton form vers l'action deletionGroup

    3 - ajoute une colonne dans ta grid pour afficher les checkbox

    4 - ces derniers doivent avoir le même attribut "name", et dans l'attribut "value" mets l'id de la ligne courante.

    5 - ajoute un bouton de suppression à ton form

    6 - dans ton controlleur grails, tu verras que la variable params.NAME_DE_CHECKBOX contient la liste des id séléctionnés et là tu fais ta suppression sur les id en question.

    voilà

    Nabil

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Tu mets tes checkbox dans un form de ce type :
    <g:form action="deletionGroup" method="post">
    <input type="radio" checked="checked" name="premier" value="premier" >
    </g:form>
    Dans ton contrôleur, tu peux récupérer les éléments de ta page avec l'attribut "params" (inspires toi des fichiers générés)

    Et là tu fais un
    if (params.premier != null) {
    .. // là tu fais la requête qui va bien
    }
    Normalement c'est à peu près comme ça

    EDIT : Bon bah comme on vient de dire juste avant moi quoi
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Bonjour à tous les deux,

    Merci énormément pour vos propositions.
    Mon soucis était de savoir comment le params reconnait mes checkbox
    et grâce à vous, je pense avoir compris.
    Je l'applique immédiatement et je vous tiens informé.

    A toute et encore merci

    St@n

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Hello c'est encore moi,

    A propos du list.gsp tout est ok!!

    Mais lorsque je delete, il me renvoi cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception Message: Impossible de déduire le type SQL à utiliser pour une instance de java.util.LinkedHashMap$Entry
    Mon deleteAll quant à lui, dans le Contrôleur ressemble à ceci :

    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
    18
    19
    20
    21
    def deleteAll = {
     
            // About my Database
     
            def sql = Sql.newInstance(.... )
     
            //Creer une liste avec les params
     
            def user = authenticateService.userDomain()
            def currentUser
            currentUser = PsToolsUser.get(user.id)
            def userKeywords = currentUser.userkeyword
            def myList = [userKeywordsInstanceList: params.userKeywordCheckBox.toLong()]
            myList.each{
     
                sql.execute("delete from userKeywords where id = ?" , it)
     
            }
        }
     
        }
    J'ai pas encore géré le if au cas où il y aurait pas de checkbox checked et
    qu'on appui sur le bouton.

    Une idée svp?? //Je travaille en local avec postgres

    Ok je m'y remet ...

    A +

    St@n

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    C'est ok !!
    J'ai fais une bêtise en déclarant ma liste :
    J'aurai du écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def myList = [params.userKeywordCheckBox.toLong()]
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def myList = [userKeywordsInstanceList: params.userKeywordCheckBox.toLong()]
    Car il prenait toute la chaine ==> Donc parlait de String

    Merci énormément à vous les gars : C'est sympa

    NB : Nabil, vu la façon dont tu es pédagogue, t'aurais dû être Prof

    A+++

    Bon début de wknd

    St@n

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Question bête mais :
    - >le "params.userKeywordCheckBox.toLong()" te renvoie quoi ? Il renvoie bien une valeur correcte ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Y a jamais de question bête mon cher Robin56 .

    Il me renvoit l'id du "userkeyword" sélectionné : Dans le cas de mon exemple id = 27 qui est correct !!

    Cependant, je trouve non optimisé le fait de jouer avec les valeurs en dur de ma database

    N'aurait t'il pas des méthodes me permettant d'éviter cela du genre les filtres dynamiques ???

    A chercher!!

    A+

    St@n

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Je m'excuse Robin56 : Je viens d'effectuer un test et je comprend mieux
    ta question .

    Le pb c'est que lorsque je coche plusieurs cases, suis hors limite vu que
    j'ai qu'un élément dans la List ...

    Merci pour ta question .
    Je vais voir quoi faire et poster la solution ... si je là trouve d'ici là.

    St@n

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Hello à tous,

    Juste pour vous dire que c'est enfin ok.
    Je me suis compliqué la vie pour rien et je m'excuse
    pour la grosse bêtise faite précédemment.

    La solution qui fonctionne très bien chez moi et qui est à optimiser
    avec des tests ...

    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
     def deleteAll = {
     
            // About my Database
     
            def sql = Sql.newInstance(***************** )
     
            for(int i =0;i<(params.userKeywordCheckBox).size();i++)
            {
                println(params.userKeywordCheckBox[i])
                sql.execute("delete from user_keywords_ps_user where user_keywords_id = ?" ,(params.userKeywordCheckBox[i]).toLong())
                sql.execute("delete from search_engine_user_keywords where user_keywords_id = ?" ,(params.userKeywordCheckBox[i]).toLong()) 
                sql.execute("delete from user_keywords where id = ?" ,(params.userKeywordCheckBox[i]).toLong())
            }
     
                 redirect(action: "list")
     
        }
    Merci beaucoup à vous Nabil et Robin et à bientôt

    St@n ==> Sujet résolu

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

Discussions similaires

  1. multiples <s:checkbox> avec meme name
    Par fahmi.bedoui dans le forum Struts 2
    Réponses: 0
    Dernier message: 01/05/2012, 01h08
  2. Poster une sélection multiple avec des checkbox
    Par Sub0 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 02/11/2011, 17h17
  3. Création d'un site Survey avec checkbox multiples
    Par titanium54 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/04/2011, 10h07
  4. [AJAX] Suppression données mysql avec checkbox et passant par ajax
    Par MartiW dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/12/2008, 09h56
  5. [DOM] checkbox multiples avec attribut name du type nom[]
    Par beyo dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 16/04/2008, 09h15

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