使用自定义标记填充<select>?</select>

时间:2014-12-07 14:08:25

标签: tags coldfusion-10 cfml

我的应用程序需要使用自定义查询中的选项填充html选项。我试图将逻辑放入一个通用的自定义标签中,以便我的视图更清晰,更具可读性。我是cfml的新手。

这是我的代码:

<!--- ```````````````````````````````````````````````````````````````````````````` --->
<!--- This tag will populate any SELECT with the OPTIONs pulled from the database. --->
<!--- The attributes of this tag are                                               --->
<!---         data_source: The datasource for the query                            --->
<!---        table_source: The table used for the query                            --->
<!--- option_value_source: The DB cell to use for the value of the option.         --->
<!--- option_inner_source: The DB cell to use for the value of the inner text.     --->
<!--- ____________________________________________________________________________ --->

<cfquery name="option_query" datasource="#Attributes.data_source#">
    SELECT * FROM #Attributes.table_source#
</cfquery>

<cfoutput query="option_query">
    <option value="#Attributes.option_value_source#"> <!--- The cell to be used for the value of the option      --->
        #Attributes.option_inner_source#              <!--- The cell to be used for the inner text of the option --->
    </option>
</cfoutput>

我打电话给:

<label>
        Class Name    
        <select name="className" id="className">
            <cf_getOptions data_source="codify" table_source="classes" option_value_source="classes.id" option_inner_source="classes.name">
        </select>
</label>

结果是我得到一个SELECT填充了每个结果的单词class.name。

执行此操作的最佳cfml方法是什么(我假设人们通常不会为此使用自定义标记)?是否可以重写此代码以获得正确的结果?

1 个答案:

答案 0 :(得分:1)

你很接近(对你来说使用自定义标签很好,顺便说一下。)

您需要告诉CF您想要查询中的列值,而不仅仅是传入属性的值。所以就是这样:

<cfoutput query="option_query">
    <option value="#option_query[Attributes.option_value_source][currentRow]#">
        #option_query[Attributes.option_inner_source][currentRow]#
    </option>
</cfoutput>

人们只能按照原来的方式直接引用列名,但是这里需要一个间接引用,这意味着代码变得有点麻烦。