根据下拉列表中的选择从cfselect传递2个值?

时间:2016-05-04 13:48:17

标签: ajax drop-down-menu coldfusion cfquery cfselect

这只是我关于SO的第二个问题,而且我是各种网络编码的新手(我已经做过的任何事情,我已经在过去的3周内完成了所以我不知道&# 39;我真的知道我在做什么,但这里有一些背景和我的问题:

背景信息: 我更新了以前有过的一些现有页面,没有玩笑,42个不同的下拉菜单来显示不同水体和采样日期的数据地图。因此,我在2个下拉菜单中将所有内容简化为更优雅(但仍然过时)的方法,用户可以选择支持的组合和他们想要查看数据的采样日期。

我有两个使用CFC和CFM的动态相关下拉列表(这些都很有效,感谢SO的帮助)。 CFC具有从数据库获取数据的函数,查询和参数。 CFM显示第一个下拉菜单(支流列表),当用户从中选择时,第二个下拉列表中填充了支流/采样的日期。 '显示'第二次下拉列表是在日期开头附加的支流名称,因此它们显示为' tribdate',像" Back River:2014年4月7日"。当用户从第二个下拉列表中选择他们想要的内容(名为'链接')并点击提交时,发送的值是路径字符串(' File_html'),在目标上页面,导致在这些日期为这些支流显示的数据地图。在目标网页中,' form.link'定义,循环,并正确显示所有数据地图图像(即' File_html')。

我的问题: 在显示的每个图像上方,我想要拥有"支流"名称和"抽样日期"但我不知道如何传递这些信息。我正在传递' File_html'但我想通过' tribdate' (显示值)或通过'支流'或者' cruisedate'分别。甚至可以使用图片中的替代文字,但我也不知道该怎么做。

我尝试过的内容: (1)我无法从传递的值中提取可用的支流名称(许多是部分名称),但我可以提取一个可用的支流日期。 (2)如果我拉了支流'选择支流的第一个下拉列表中的名称,并尝试使用它来标注地图,它只适用于一个地图(这有意义bc只选择了一个支流)。因此,如果用户从“后河”中选择了2个日期。只有一张地图可以显示为“后河”的标题。并且第二个错误。如果有办法复制这个支流值,以便在需要时重复使用,那就太好了。 (3)我尝试制作第三个下拉列表,其中只显示所选日期的支流名称,然后在地图显示中使用标题名称的下拉菜单名称,这有效,但我无法真正让人选择那些,我希望它们自动通过。

我可以从CFC拨打支流吗?我可以发送' tribdate'到mapdisplay页面?任何帮助,提示,想法都会很棒,谢谢。 我看到这个问题基本上就是我要问的问题,但我真的不明白在哪里提出答案:Using CFQUERY and CFSELECT to pull multiple values based on selection

CFC:

<cfcomponent displayname="GetStuff" hint="Getting data on cruises from database">
<!---Get list of Tributaries--->
    <cffunction name="getData" 
                access="remote" 
                returntype="query"
                hint="Get data for tributary dropdown">

<!---define variables--->
<CFSET VAR data="">

<!---Run the query for tributaries--->
<cfquery name="data" datasource="mydatasource">
    SELECT DISTINCT Tributary
    FROM df_cruises
    ORDER BY Tributary
</cfquery>

<!---and return it--->
<cfreturn data>
</cffunction>

<!---Get Dates by Tributary--->
<cffunction name="getDates"
            access="remote"
            returntype="query"
            hint="Get cruise dates by tributary for select dropdown">
<cfargument name="Tributary" type="any" required="no" multiple="yes">

<!---define variables--->
<cfset var data="">

<!---Run query to get Date Data and add Trib name to front, and get File_html to send to MapDisplay--->
<cfquery name="data" datasource="mydatasource">
    SELECT File_html, Tributary, (Tributary + ':' + SPACE(2)) + CONVERT(varchar(12), CruiseDate, 107) AS tribdate
    FROM df_cruises
    WHERE Tributary IN (<cfqueryparam cfsqltype='cf_sql_varchar' list="yes" value='#ARGUMENTS.Tributary#'>)
    ORDER BY tribdate
</cfquery>

<!---And return it--->
<cfreturn data>
</cffunction>

</cfcomponent>

具有下拉/形式的CFM:

<cfform name="CruiseChoose" action="mapdisplayv5.cfm" method="post">    
 <td align="center">
     <strong>Tributary/Water Body:</strong><br />
    <cfselect name="Tributary"
    size="7" class="dynamicdropdown"
    multiple="yes"
    value="Tributary"
    display="Tributary"
    bind="cfc:UsingBook.getData()"
    bindonload="yes"/>
    </td>

    <td align="center"><br />
      <strong>Sampling Dates:</strong><br />
    <cfselect name="link"
    size="7" class="dynamicdropdown"
    multiple="yes"
    value="File_html"
    display="tribdate"
    bind="cfc:UsingBook.getDates({Tributary})"
    bindonload="false"
    type="any"/>
    </td>

显示数据映射的目标CFM页面:

<!---mapdisplayv5.cfm--->
<tr>
<td>
<p><p><cfoutput>
<cfif IsDefined("form.link")>
<br>
<cfset cnt= 1>
<cfloop index="listing" list="#form.link#" delimiters=",">
<cfset Tributary=#listGetAt(form.link, cnt)#> 
<div align="center">
<font size="4"><b>#Tributary#<cfset cnt=cnt> - <cfset tribdate=#listGetAt(form.link, cnt)#> #right(tribdate, 6)# </b></font>
<cfset wqmimage=#listGetAt(form.link, cnt)#>
<table width="85%" border="1" bordercolor="##000000">
  <tr>
    <td><a href="images/#Ltrim(wqmimage)#lg.html" class="link"><cfinclude template="images/#Ltrim(wqmimage)#.html"></a></td>
  </tr>
</table>

<a href="images/#Ltrim(wqmimage)#lg.html" class="link">Click here for Enlarged Map (WARNING-Large File Size)</a><Br>

<cfif listlen(form.link)Less Than or Equal to #cnt#>
<cfbreak>
</cfif>
<cfset cnt=cnt+1>

<br><br><hr>

</cfloop>
<cfelse>
<b>
<p align="center"><br><br><br><br>No Selection Was Made.<br>Please Return to the Previous Page and Make Your
    Selection</p></b><Br>
    <br><br><br>
</cfif>
</p>

</cfoutput></p>

更新: 在CFM页面上,我现在正在传递PK&#34; ID&#34;到mapdisplayv5.cfm,下面是新的代码。它现在关联正确的标题并显示我想要的图像并将显示多个,但每个倍数是第一个选择来自第二个下拉列表的副本。因此,如果您选择2个不同的日期,则会显示您选择的第一个日期的2个副本。

使用表单更改CFM第二个下拉列表的快照,请注意我现在正在传递ID:

<td align="center"><br />
  <strong>Sampling Dates:</strong><br />
<cfselect name="link"
size="7" class="dynamicdropdown"
multiple="yes"
value="ID"
display="tribdate"
bind="cfc:UsingBook.getDates({Tributary})"
bindonload="false"
type="any"/>
</td>

切换到mapdisplay.cfm页面:

<!---mapdisplayv5.cfm--->
<tr>
<td>
<p><cfoutput>
<cfif IsDefined("form.link")>
<cfquery name="retrieve" datasource="mydatasource">
SELECT File_html, Tributary, CruiseDate, (Tributary + ':' + SPACE(2)) + CONVERT(varchar(12), CruiseDate, 107) AS tribdate
FROM df_cruises
WHERE ID IN (<CFQUERYPARAM VALUE='#FORM.link#' list='yes' CFSQLTYPE='CF_SQL_INTEGER'>)
</cfquery>
<cfset cnt= 1>
<cfloop index="listing" list="#form.link#" delimiters=",">
<br>
<cfset wqmimage=#retrieve.File_html#>
<cfset tributary=#retrieve.Tributary#>
<cfset tribdate=#retrieve.tribdate#>
<div align="center">
<font size="4"><b>#tribdate#</b></font>
<a href="images/wqmimage.jpg" class="link"><cfinclude template="images/#Ltrim(wqmimage)#.html"></a>
<a href="images/#Ltrim(wqmimage)#lg.html" class="link">Click here for Enlarged Map (WARNING-Large File Size)</a><Br><br>
<cfif listlen(form.link)Less Than or Equal to #cnt#>
<cfbreak>
</cfif>
<cfset cnt=cnt+1>
</cfloop>
<cfelse>
<br>
<p align="center"><br><br><br><br>No Selection Was Made.<br>Please Return to the Previous Page and Make Your
    Selection</p></b><Br>
    <br><br><br>
</cfif>
</cfoutput>

更新2:mapdisplayv5.cfm的更正后的工作版本 (谢谢卢克,丹和雷!)

<!---mapdisplayv5.cfm--->
<tr>
<td>
<p>
<cfif IsDefined("form.link")>
<cfquery name="retrieve" datasource="tideRO">
SELECT File_html, Tributary, CruiseDate, (Tributary + ':' + SPACE(2)) + CONVERT(varchar(12), CruiseDate, 107) AS tribdate
FROM df_cruises
WHERE ID IN (<CFQUERYPARAM VALUE='#FORM.link#' list='yes' CFSQLTYPE='CF_SQL_INTEGER'>)
</cfquery>
<br><cfoutput query="retrieve">
<cfset wqmimage=#retrieve.File_html#>
<cfset tributary=#retrieve.Tributary#>
<cfset tribdate=#retrieve.tribdate#>
<div align="center">
<font size="4"><b>#tribdate#</b></font>
<a href="images/#wqmimage#.jpg" class="link"><cfinclude template="images/#Ltrim(wqmimage)#.html"></a>
<a href="images/#Ltrim(wqmimage)#lg.html" class="link">Click here for Enlarged Map (WARNING-Large File Size)</a><Br><br></cfoutput>

0 个答案:

没有答案