我正在处理我获得两个列表的代码。我正在尝试使用这些列表在具有“multiple”属性的选择框中预选项目。但是,我无法保留选择。
代码:
<select name="sbbox" id="sbbox" class="can" multiple>
<cfloop list="#lstFinds#" index="k" delimiters=",">
<option value="#k#" <cfif #listfindnocase(k,getproducts.ptype)#>selected</cfif>>#k#</option>
</cfloop>
</select>
示例值:
lstFinds = abc,xyz
getproducts.ptype
还包含abc,xyz
如果用户同时存在两个值,我想保持两个选定状态。如果存在,请选择一个。如果没有选择,则不保留。
我也尝试使用listContains
,但它没有用。
从pastebin linkL转移
ptype
值在数据库中以逗号分隔,即“abc,wed,mon,def”。无论这些值是什么,我需要匹配并选择listFind中具有相同值的那些值。我希望我说得更清楚。
<cfset lstFinds = 'abc,xyz,def,www,kkr,mon,tue,wed'>
<cfquery name="getproducts" datasource="cdfg">
select ptype
from
mytable
where
ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#id#">
</cfquery>
<select name="sbbox" id="sbbox" class="can" multiple>
<cfloop list="#lstFinds#" index="k" delimiters=",">
<option value="#k#" <cfif #listfindnocase(k,getproducts.ptype)#>selected</cfif>>#k#</option>
</cfloop>
</select>
答案 0 :(得分:3)
这有三个问题:
<cfloop list="#lstFinds#" index="k" delimiters=",">
<option value="#k#" <cfif #listfindnocase(k,getproducts.ptype)#>selected</cfif>>#k#</option>
</cfloop>
首先,正如其他人所提到的,在listfindnocase函数中,列表首先出现。
接下来,在排除第一个问题后,您没有得到所需结果的原因是getproducts.ptype不是列表。它是查询第一行的值。要获取列表中的所有值,请使用valuelist()函数。
最后,选择选项的正确语法是selected="selected"
。所以上面的代码块应该是这样的:
<cfloop list="#lstFinds#" index="k" delimiters=",">
<option value="#k#"
<cfif listfindnocase(ValueList(getproducts.ptype), k)>
selected="selected"
</cfif>>#k#
</option>
</cfloop>
答案 1 :(得分:0)
好的,提问者通过Pastebin
提供了以下代码<cfset lstFinds = 'abc,xyz,def,www,kkr,mon,tue,wed'>
<cfquery name="getproducts" datasource="cdfg">
select ptype
from
mytable
where
ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#id#">
</cfquery>
these are coming from database column ptype of a table as: abc,wed,mon,def
<select name="sbbox" id="sbbox" class="can" multiple>
<cfloop list="#lstFinds#" index="k" delimiters=",">
<option value="#k#" <cfif #listfindnocase(k,getproducts.ptype)#>selected</cfif>>#k#</option>
</cfloop>
</select>
我在cflive.net上运行了以下代码
<cfset lstFinds = 'abc,xyz,def,www,kkr,mon,tue,wed'>
<cfset getProducts = {pType = "abc,wed,mon,def"}>
<cfoutput><select name="sbbox" id="sbbox" class="can" multiple>
<cfloop list="#lstFinds#" index="k" delimiters=",">
<option value="#k#" <cfif #listfindnocase(getproducts.ptype,k)#>selected</cfif>>#k#</option>
</cfloop>
</select></cfoutput>
当我运行此代码时,选择了abc,def,mon和wed。是否应该选择这些,还是应该检查其他人?
此代码似乎正在按照您的要求进行操作。我做的唯一改变
最后,您是否可能尝试从多行中提取此信息?你可以试试
<cfset variables.ptypes = valuelist(getproducts.ptype)>
<cfoutput><select name="sbbox" id="sbbox" class="can" multiple>
<cfloop list="#lstFinds#" index="k" delimiters=",">
<option value="#k#" <cfif #listfindnocase(variables.ptypes,k)#>selected</cfif>>#k#</option>
</cfloop>
</select></cfoutput>