我的下拉字段存在问题,该字段由大型查询动态填充。由于当用户访问表单时查询返回一个非常大的值,表单冻结。它就像是在等待下拉列表的填充。与此同时,所有表单格式都搞砸了,下拉列表消失了。当我将查询限制为较少数量的记录时,一切正常。此查询返回超过26K的记录。 有没有解决方法来解决ColdFusion中的这个问题?我不相信ColdFusion无法处理这种情况。我使用ColdFusion2016和后端Oracle 11g。
以下是查询和下拉列表:
<cfquery name="xCodes" datasource="#application.DSN#">
select xcode, desc, xcode || ' ---- ' || desc as FullDesc
from x_header
<cfif IsDefined("url.codes")>
<cfif url.codes EQ "y">
order by xcode
<cfelse>
order by desc
</cfif>
</cfif>
</cfquery>
<select name="xcode" id="xcode" class="RegSelect" required="TRUE">
<option value="">--- Select a code ---</option>
<cfoutput query="xCodes">
<option value="#xcode#">#FullDesc#</option>
</cfoutput>
</select>
答案 0 :(得分:6)
我同意Alex Poole的选择中的26K项目相当大,在我看来,您的浏览器的渲染引擎正在努力构建它,这就是为什么你的格式化是不可思议的直到它#&# 39; s终于建成了。
以下是一些建议。
是否可以将值分解为逻辑组并使用多个选择?因此,您的第一个选择将是逻辑组值。一旦用户选择了他们的选择,下一个选择将只包含该逻辑组中的值。如果不存在这样的逻辑分组,那么您可以自己编写。例如,您可以使用字母表中的26个字母作为逻辑组,然后您的子选择将平均包含1000个选项。
另一个建议是使用jQuery自动完成并通过ajax调用填充您的值。我已经使用ColdFusion和Oracle多次完成了这项工作,效果很好。