3

这只是我关于 SO 的第二个问题,而且我对各种网络编码都是全新的(我所做的任何事情都是在过去 3 周内完成的,所以我真的不知道自己在做什么)但这里有一些背景和我的问题:

背景信息: 我正在更新一些现有的页面,这些页面以前有 42 个不同的下拉菜单,以显示不同水体和采样日期的数据图。因此,我将其浓缩为 2 个下拉菜单中所有这些内容的更优雅(尽管仍然过时)的方法,用户可以在其中选择他们想要查看数据的支流和采样日期的任何组合。

我有 2 个使用 CFC 和 CFM 的动态相关下拉菜单(由于 SO 的帮助,它们工作得很好)。CFC 具有从数据库中获取数据的功能、查询和参数。CFM 显示第一个下拉菜单(支流列表),当用户从中选择时,第二个下拉菜单将填充支流采样的日期。此第二个下拉列表的“显示”是附加到日期开头的支流名称,因此它们显示为“部落日期”,例如“Back River:2014 年 4 月 7 日”。当用户从第二个下拉列表(名为“链接”)中选择他们想要的内容并点击提交时,发送的值是路径字符串(“File_html”),在目标页面上,会显示数据映射那些日期的那些支流。在目标页面中的“form.link”

我的问题: 在显示的每张图像上方,我想要“支流”名称和“采样日期”,但我不知道如何传递此信息。我正在传递 'File_html' 但我想传递 'tribdate' (显示值)或分别传递 'tributary' 或 'cruisedate'。甚至使用图像中的替代文本,但我也不知道该怎么做。

我试过的: (1) 我无法从传递的值中提取可用的附属名称(许多是部分名称),但我可以提取可用的附属日期。(2) 如果我从选择支流的第一个下拉列表中提取“支流”名称并尝试使用它来命名地图,它仅适用于一张地图(这很有意义 bc 只选择了 1 个支流)。因此,如果用户从“Back River”中选择 2 个日期,则只能显示一个标题为“Back River”的地图,而第二个则出现错误。如果有一种方法可以复制这个附属值,以便在需要时重复使用,那就太好了。(3) 我尝试制作第三个下拉菜单,它只显示所选日期的支流名称,然后在地图显示上使用该下拉菜单的名称作为标题名称,这可行,但我不能

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

氟氯化碳:

<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“ID”传递给 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>
4

0 回答 0