2

我的下拉字段存在问题,该字段由大型查询动态填充。由于当用户访问表单时查询返回一个非常大的值,所以表单会冻结。就像它在等待下拉列表被填充一样。与此同时,所有表单格式都被弄乱了,下拉菜单消失了。当我将查询限制为较少的记录时,一切正常。此查询返回超过 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>
4

1 回答 1

6

我同意 Alex Poole 的观点,即选择中的 26K 项目相当大,在我看来,您的浏览器的渲染引擎正在努力构建它,这就是为什么您的格式在最终构建之前是不稳定的。

这里有几个建议。

  1. 是否可以将值分解为逻辑组并使用多项选择?因此,您的第一个选择将是逻辑组值。一旦用户选择了他们的选择,下一个选择将只包含该逻辑组内的值。如果不存在这样的逻辑分组,那么您可以自己编组。例如,您可以使用字母表中的 26 个字母作为逻辑组,那么您的子选择将平均包含 1000 个选项。

  2. 另一个建议是使用 jQuery 自动完成并通过 ajax 调用填充您的值。我已经使用 ColdFusion 和 Oracle 做了几次,效果很好。

于 2018-01-19T14:58:28.790 回答