2011-11-08 3 views
0

Comment mettre en œuvre une cellule de tableau dans Grails qui aura un bouton et en appuyant sur il va changer les données dans une cellule de la même ligne? Disons que la table n'a que des champs id, assignment, accepted (yes, no). La valeur de accepté est par défaut non et lorsque vous cliquez sur le bouton Accepter, il devient oui. Dois-je utiliser la table de données UI Grails ou jQuery Grid?Comment implémenter une table responsive dans Grails?

Répondre

1

Vous pouvez utiliser un bouton submitToRemote et mettre à jour la ligne du tableau en cours à l'aide de la balise update. Par exemple: dans votre index.gsp:

<table> 
<g:each in="${yourDataList}" var="data"> 
<tr id="dataRow${data.id}"> 
    <g:render template="tableRow" /> 
</tr> 
</g:each> 
</table> 

Si votre modèle de _tableRow.gsp est quelque chose comme:

<td>${data.id}</td> 
<td>${data.booleanValue}</td> 
<td><g:submitToRemote action="updateAction" id="${data.id}" update="dataRow${data.id}" /></td> 

Notez la valeur d'attribut de update est identique à celle de l'<tr> de index.gsp. Votre commande a une action updateAction:

def updateAction = { 
    Data data = Data.get(params.id) 

    // your business logic 
    data.booleanValue = false; 

    data.save(flush: true); 

    render(template: "tableRow", model: [data: data]); 
} 

Il y a évidemment d'autres possibilités, mais cela pourrait être une option pour vous.

+0

Je ne suis pas sûr de comprendre cela. Pourquoi affichez-vous un modèle dans la vue? Ne devrait-il pas être fait dans l'action du contrôleur? Et n'est-ce pas la propriété de mise à jour de la balise submitToRemote g: juste pour définir le changement de div youre? – drago

+0

J'ai essayé différentes combinaisons de suggestions, mais aucune n'a fonctionné. J'ai géré pour rendre une vue correctement, mais le bouton n'était pas réactif. – drago

+1

Désolé, peut-être que je vous ai compris. Le morceau de code montre juste, comment faire une table, où l'utilisateur peut exécuter des actions sur chaque rangée (par exemple accepter une tâche), et selon l'action quelque chose sur la page est changée (dans ce cas la rangée de table est rechargée) à partir du serveur et la logique gsp gère votre changement puis: changer le texte du bouton par exemple). – Chris

Questions connexes