Coldfusion会话变量

时间:2011-07-22 09:52:03

标签: coldfusion coldfusion-9

我们有一个列表框,它会被查询动态填充。当我们在列表框中选择一个值并提交表单时,结果将显示在同一页面中。现在我们要保留选中的值表单提交时的列表框。我们如何解决这个问题?我们尝试使用以下代码在会话中设置变量:                                                                                                                       会话:#session.sPcwQua#                     

现在我们如何使用列表框中我们的例子session.sPcwQua中设置的会话变量,以便保留列表框中的选定值。

2 个答案:

答案 0 :(得分:0)

您可能希望使用表单范围而不是会话范围: 设置表单默认值:

 <cfparam name="form.sPcwQua" default="" />

运行您的查询:

 <cfquery name="getsPcwQua" datasource="...

填充您的选择框:

<select name="form.sPcwQua">
    <cfloop query="getsPcwQua">
    <cfif form.sPcwQua eq getsPcwQua.value>
          <cfset selected = 'selected="selected"' />
    <cfelse>
          <cfset selected = '' />
    </cfif>
    <option value='#getsPcwQua.value#' #selected#>#getsPcwQua.value#</option>
    </cfloop>
</select>

[可能要检查那里的一些语法 - 因为我没有; t;)]

-Sean

答案 1 :(得分:0)

如果您特别需要“保留值”并且想要设置session.sPcwQua变量,可以试试这个:

<cfif isDefined("form.sPcwQua")><cfset session.sPcwQua = form.sPcwQua></cfif>

<cfquery name="getsPcwQua" datasource="yourdsn">
    select x from tablex
</cfquery>

<form name="someform" action="">

    <select name="sPcwQua">
        <cfloop query="getsPcwQua">
            <option value='#getsPcwQua.x#' <cfif getsPcwQua.x eq session.sPcwQua >selected</cfif> >#getsPcwQua.x#</option>
        </cfloop>
    </select>

</form>

如果您只是尝试提交表单并返回元素值,那么应该像Seasn所说的那样:

<cfset fsPcwQua="" />
<cfif isDefined("form.sPcwQua")><cfset fsPcwQua = form.sPcwQua></cfif>

<cfquery name="getsPcwQua" datasource="yourdsn">
    select x from tablex
</cfquery>

<form name="someform" action="">

    <select name="sPcwQua">
        <cfloop query="getsPcwQua">
            <option value='#getsPcwQua.x#' <cfif getsPcwQua.x eq fsPcwQua >selected</cfif> >#getsPcwQua.x#</option>
        </cfloop>
    </select>

</form>