根据先前的选择填充选择 - 如何在选择后运行查询

时间:2013-06-21 18:29:09

标签: select drop-down-menu coldfusion

我正在使用SQL Server 2012作为数据源的Windows Server 2008 R2 Datacenter上运行Coldfusion 10,0,8,284032。

我想在表单上创建两个选择。一个有野生动物保护名称,另一个列出保护区后保留的小径。我在db表dbo.reserveandtrail中有保留和跟踪,其中包含ID,trailname和reservename的cols。

我遇到的问题是如何在下拉列表中选择保留时发出查询以选择路径。是否可以简单地使用CF来实现这一点,还是应该研究JS / Ajax?

1 个答案:

答案 0 :(得分:0)

老实说,要么运行良好(jQuery / Ajax或Coldfusion内置的ajax函数)。这真的取决于项目。如果您当前没有在应用程序中严重依赖jQuery,那么Coldfusion可能是最快的实现,并且没有依赖项/导入。

如果正确构建了cfc函数,它们将与之合作,因此它们可以与任何一种方法互换使用。

这是一个快速的Coldfusion演示......希望它有所帮助。

==== HTML

<cfform name="test" >
    <cfselect name="option1">
        <option value="">--please select--</option>
        <option value="1">Option 1</option>
        <option value="2">Option 2</option>
        <option value="3">Option 3</option>
    </cfselect>
    <cfselect name="option2" display="suboption_display" value="suboption_value" bindOnLoad="true" bind="cfc:webroot.jquery.stackoverflow.cascadingselect.applogic.select_binding({option1})" ></cfselect>
</cfform>

== CFC

<cfcomponent>
    <cffunction name="select_binding" access="remote" returntype="query">
        <cfargument name="selected_option" type="string" required="yes">

        <cfset dataset = QueryNew('suboption_display,suboption_value','CF_SQL_VARCHAR,CF_SQL_INTEGER')>

        <cfswitch expression="#arguments.selected_option#">
            <cfcase value="1">
                <cfset r = queryaddrow(dataset,3)>
                <cfset temp = querysetcell(dataset, 'suboption_display', 'black', 1)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 1, 1)> 
                <cfset temp = querysetcell(dataset, 'suboption_display', 'white', 2)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 2, 2)> 
                <cfset temp = querysetcell(dataset, 'suboption_display', 'gray', 3)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 3, 3)> 
             </cfcase>
            <cfcase value="2">
                <cfset r = queryaddrow(dataset,3)>
                <cfset temp = querysetcell(dataset, 'suboption_display', 'red', 1)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 1, 1)> 
                <cfset temp = querysetcell(dataset, 'suboption_display', 'blue', 2)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 2, 2)> 
                <cfset temp = querysetcell(dataset, 'suboption_display', 'green', 3)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 3, 3)> 
            </cfcase>
            <cfcase value="3">
                <cfset r = queryaddrow(dataset,3)>
                <cfset temp = querysetcell(dataset, 'suboption_display', 'yellow', 1)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 1, 1)> 
                <cfset temp = querysetcell(dataset, 'suboption_display', 'orange', 2)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 2, 2)> 
                <cfset temp = querysetcell(dataset, 'suboption_display', 'purple', 3)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 3, 3)> 
            </cfcase>
            <cfdefaultcase>
                <cfset r = queryaddrow(dataset,1)>
                <cfset temp = querysetcell(dataset, 'suboption_display', '--please select option--', 1)> 
                <cfset temp = querysetcell(dataset, 'suboption_value', 0, 1)> 
            </cfdefaultcase>
        </cfswitch>

        <cfreturn dataset>
    </cffunction>
</cfcomponent>