【问题标题】:populating select based on previous select - how to run the query after selection根据先前的选择填充选择 - 如何在选择后运行查询
【发布时间】:2013-06-24 20:00:30
【问题描述】:

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

我想在一个表单上创建两个选择。一个具有野生动物保护区的名称,另一个列出了选择保护区后该保护区中的小径。我在 db 表 dbo.reserveandtrail 中有保留区和轨迹,其中包含 ID、轨迹名称和保留名称的列。

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

【问题讨论】:

  • 那里有很多例子......请参阅stackoverflow.com/questions/13414175/… 获取示例。
  • 我发现 cfinput 或 cfselect 的 bind 属性是完成此任务的一种非常简单的方法。谷歌这些标签的例子。在尝试将它们与 ajax 一起使用之前,请确保您的查询和 cfc 函数正常工作。
  • 您只能使用 CF 来完成,但表单会刷新并跳转到另一个页面,看起来就像 90 年代。
  • 除非迫不得已,否则我不会使用 cfinput 或 cfselect。使用 JavaScript 调用您的 cfc
  • 马特和我似乎有不同的意见。我认为这证明了我们每个人都能够形成一个。

标签: select drop-down-menu coldfusion


【解决方案1】:

老实说,要么效果很好(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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2012-12-24
    • 2018-09-26
    • 2018-12-06
    相关资源
    最近更新 更多