动态下拉列表由于大查询而混乱

use*_*216 2 html coldfusion html-select oracle11g coldfusion-2016

我的下拉字段存在问题,该字段由大型查询动态填充.由于当用户访问表单时查询返回一个非常大的值,表单冻结.这就像是在等待下拉列表的填充.与此同时,所有表单格式都搞砸了,下拉列表消失了.当我将查询限制为较少数量的记录时,一切正常.此查询返回超过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>
Run Code Online (Sandbox Code Playgroud)

小智 6

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

以下是一些建议.

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

  2. 另一个建议是使用jQuery自动完成并通过ajax调用填充您的值.我已经使用ColdFusion和Oracle多次完成了这项工作并且效果很好.

  • 这是正确的答案.这不是ColdFusion问题.下拉列表中的26k选项无法使用且非常荒谬.如建议的那样,更好的方法是使用AJAX搜索下拉列表. (4认同)