2010-11-05 95 views
1

基本上,我已將信息存儲在數據庫字段中,並且我想通過表單再次顯示它。有沒有一種更簡單的方法來操縱Coldfusion中的複選框?

原始表單具有相同的複選框,但它們始終爲空。用戶可以關閉這些框並將值輸入到數據庫中。

研究生課程:秋季?彈簧?夏季?作爲名爲grad的列存儲爲列表。 (F,M,S)

他們可以選擇將這個可愛的表格保存爲草稿。當他們回到草稿時,我需要顯示他們可能已經檢查過的內容。

<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> 

是否有與CFFORM代碼這樣更簡單的方法?

只是好奇。 :)

回答

3

我不喜歡這樣,因爲我真的不使用<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> 

但ColdFusion的文檔狀態:

[因爲] ColdFusion MX的:改變了cfform標籤 preserveData屬性行爲:如果它 設置爲True,ColdFusion檢查 無線電和複選框值僅當 它們的值與控件的發佈值 相匹配。

所以是的,<cfform>可以幫助你做到這一點。使用<cfparam name="FORM.xyz" default="foobar">來模擬正常請求的「發佈價值」。

+1

嗯,CheckedIf功能只是讓我的一天。謝謝一堆! :) – Bri 2010-11-05 15:41:12

+0

@Bri:我以同樣的精神('SelectedIf()','DisabledIf()','ReadonlyIf()')創建了一堆其他實體函數庫。 – Tomalak 2010-11-05 15:50:48

+0

@docs評論:它會與列表數據? – Bri 2010-11-05 15:51:25

相關問題