2010-11-05 23 views
1

Fondamentalement, j'ai stocké des informations dans un champ de base de données et je veux l'afficher à nouveau via un formulaire.Existe-t-il un moyen plus simple de manipuler les cases à cocher dans coldfusion?

Le formulaire d'origine a les mêmes cases à cocher mais elles sont toujours vides. L'utilisateur peut cocher les cases et les valeurs sont placées dans la base de données.

Cours d'études supérieures: Automne? Printemps? Été? Stocké comme une liste dans une colonne nommée grad. (F, M, S)

Ils ont la possibilité de sauvegarder ce joli formulaire en tant que brouillon. Quand ils reviennent au brouillon, je dois montrer ce qu'ils ont déjà vérifié.

<cfif listContains(#grad#, "F") is not 0> 
    <input type="checkbox" name="grad" id="grad" value = "F" checked /> 
    <cfelse> 
    <input type="checkbox" name="grad" id="grad" value = "F" /> 
    </cfif> 
    <cfif listContains(#grad#, "S") is not 0> 
    <input name="grad" type="checkbox" id="grad" value = "S" checked /> 
    <cfelse> 
    <input name="grad" type="checkbox" id="grad" value = "S" /> 
    </cfif> 
    <cfif listContains(#grad#, "M") is not 0> 
    <input name="grad" type="checkbox" id="grad" value = "M" checked /> 
    <cfelse> 
    <input name="grad" type="checkbox" id="grad" value = "M" /> 
    </cfif> 

Existe-t-il une méthode plus simple pour ce faire avec le code cfform?

Juste curieux. :)

Répondre

3

je le fais comme ça, comme je ne suis pas vraiment utiliser <cfform>:

<cfloop list="F,S,M" index="g"> 
    <input type="checkbox" name="grad" id="grad_#g#" value="#g#" #CheckedIf(ListFind(grad, g) gt 0)# /> 
</cfloop> 

<!--- ... ---> 
<cfscript> 
    function CheckedIf(expression) { 
    if (arguments.expression) return 'checked="checked"'; 
    return ""; 
    } 
</cfscript> 

Mais l'état docs ColdFusion:

[depuis] ColdFusion MX: Changé la balise cfform preserveData attribut comportement: si est réglé sur True, contrôles ColdFusion radio et les valeurs de la boîte que si leur valeur correspond à la valeur affichée pour le contrôle.

Alors oui, <cfform> peut vous aider avec ceci. Utilisez <cfparam name="FORM.xyz" default="foobar"> pour émuler la "valeur affichée" pour les demandes normales.

+1

Mmmm que la fonction CheckedIf vient de faire ma journée. Merci beaucoup! :) – Bri

+0

@Bri: J'ai fait un tas d'autres dans le même esprit ('SelectedIf()', 'DisabledIf()', 'ReadSonyIf()') qui résident dans ma bibliothèque de fonctions utilitaires. – Tomalak

+0

Commentaire @docs: cela fonctionnera-t-il avec les données de la liste? – Bri