首页 > 解决方案 > 如何通过不指定列名来为任何查询动态创建下拉菜单

问题描述

我正在创建一个 HTML 表单,它需要来自 SQL 数据库的查询值的下拉菜单。我不想对表单输入进行硬编码,但尽可能动态地创建它们,但我注意到当创建查询的下拉菜单时,选项需要指定的列名。这迫使我对每个下拉菜单进行硬编码,因为我需要为每个下拉菜单指定列名。指定列名是有意义的,因为一个查询可以有多个选定的列名,但我用于下拉菜单的查询每个只选择一个列名。

我试图用来解决这个问题的只是 Coldfusion 和 HTML。

下面是硬编码的下拉菜单。

<select name = "REV_WC">
     <option hidden disabled selected value>  </option>
         <cfoutput query = "#application.REV_WC#">
             <option value = "#REV_WC#"> #REV_WC# </option>
         </cfoutput>
</select>

我想尝试做这样的事情(不确定正确的语法是什么):

<select name = "Dd_NAME">
    <option hidden disabled selected value>  </option>
        <cfoutput query = "#db_query#">
            <option value = "#db_query.value#"> #db_query.value# </option>
        </cfoutput>
</select>

查询如下所示:

<cfscript>
    application.REV_WC = application.myDB.execute(sql = "SELECT DISTINCT REV_WC FROM MY_TABLE").getResult();
</cfscript>

标签: htmlsqldrop-down-menucoldfusioncoldfusion-9

解决方案


在大多数情况下最好是明确的,但实现您正在寻找的方法是使用ColumnList查询结果中的作为数组表示法中的列名。

<option value = "#db_query[columnList][currentRow]#"> #db_query[columnList][currentRow]# </option>

如果总是有一列那么你很好,但如果你想从列表中选择,你可以按索引选择它们。例如对于SELECT ValueColumn, LabelColumn...

<option value = "#db_query[listGetAt(columnList, 1)][currentRow]#"> #db_query[listGetAt(columnList, 2)][currentRow]# </option>

推荐阅读