2010-02-04 5 views
1

Comment définir l'attribut selectedI sur un < g: sélectionner le tag > avec une valeur dans la liste? J'ai une page qui vous permet d'ajouter un enregistrement. la page passe alors à une vue contenant un g: select et je veux que le g: select par défaut à cet item que je viens d'insérer dans la base de données.Grails g: sélection du paramètre selectedIndex

J'ai essayé de passer le nouvel objet dans le flash mais je n'arrive pas à comprendre comment obtenir son index dans la liste utilisée pour générer les données g: select.

Répondre

2

Supposant vous stockez un objet du livre dans flash.book au niveau du contrôleur, votre deuxième page pourrait ressembler à ceci:

<html> 
    <head> 
     <g:javascript library="prototype" /> 
     <g:javascript> 
       function showLast(selectedId) { 
        if (selectedId) { 
        $$('#books option[value=' + selectedId + "]")[0].selected = true; 
        } else { 
        $('books').selectedIndex = 0; 
        } 
       }; 

       Event.observe(window, 'load', init, false); 

       function init() { 
        showLast(${flash?.book?.id}); 
       } 
      </g:javascript> 
    </head> 
    <body> 
     <g:select id="books" name="id" 
        from="${Book.list()}" 
        value="title" 
        optionValue="title" 
        optionKey="id" 
     /> 
    </body> 
</html> 
+0

œuvres Impressionnant parfaitement, je l'ai adapté à jQuery avec $ (« # FILESELECT ») .val ($ {flash? .upload? .id}); – TripWired

+0

Cool. J'ai juste pensé à quelque chose: vous perdrez votre sélection si vous actualisez la page à cause de la portée du flash. Maybie il serait préférable de stocker la valeur dans un champ caché la première fois que vous entrez dans la page et lisez-le à partir de là sur les actualisations de pages suivantes ... – Philippe

Questions connexes