首先,我不僅是全新的SO,但我也是全新的任何一種網絡編程,所以總newb,感謝你的幫助和耐心!因此,以前零HTML,ColdFusion,SQL,SQL Server等的經驗,所以我在過去的兩週內學到的東西。動態依賴/三重相關在ColdFusion中選擇,第三不選擇第一個選擇
我想在ColdFusion中創建3個動態依賴下拉菜單(三重相關選擇),最終最終打開另一個.CFM頁面中的地圖。下拉列表從SQL Server中的一個表中填充。 我已經做了大量的研究(在SO和其他地方),我有一個主要工作的方法,但它有一個問題,我希望能幫助你弄清楚爲什麼一件事情沒有成功。我正在使用.CFC來查詢數據庫的每個下拉菜單的信息,我試圖使每個依賴於以前,然後在.CFM我使用「綁定」。這裏是我的代碼,同時爲CFC和CFM:
CFC(名爲GettingData):
<cfcomponent displayname="GetStuff" hint="Getting data on cruises from database">
<!---GET ARRAY OF TRIBUTARIES--->
<cffunction name="getData" access="remote" returntype="query" hint="Get data for first select">
<!---define variables--->
<cfset var data="tributary">
<!---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">
<!---Define variables--->
<cfset var data="CruiseDate">
<!---Run query to get Date Data--->
<cfquery name="data" datasource="mydatasource">
SELECT *, CruiseDate AS date <!---this gets date to display correctly in dropdown--->
FROM df_cruises
WHERE Tributary='#ARGUMENTS.Tributary#'<!---single quotes for SQL Server--->
ORDER BY CruiseDate desc
</cfquery>
<!---And return it--->
<cfreturn data>
</cffunction>
<!---getting the html file based on the cruisedate selection--->
<cffunction name="getmapname" access="remote" returntype="query"
hint="Get html file by tributary and cruisedate for dropdown select">
<cfargument name="Tributary" type="any" required="no">
<cfargument name="mapfile" type="any" required="no">
<!---Define variables--->
<cfset var data="">
<cfset var data="">
<!---Get file html Data--->
<cfquery name="data" datasource="mydatasource">
SELECT CruiseDate, Tributary, File_html
FROM df_cruises
WHERE CruiseDate='#ARGUMENTS.mapfile#'AND Tributary='#ARGUMENTS.Tributary#'AND File_html<>'notsampled'
</cfquery>
<!---And return it--->
<cfreturn data>
</cffunction>
</cfcomponent>
CFM(名爲DropdownDisplay):
<cfparam name="url.File_html" default = '2'>
<cfform name="CruiseChoose" action="mapdisplayv3.cfm" method="post">
<table align="center" bgcolor="orange">
<tr>
<th colspan="2">
<font size="+1">First Select a Water Body, Then Choose Cruise Date</font>
</th>
</tr>
<tr>
<td>
<br/>
Tributary/Water Body:<br />
<cfselect name="Tributary"
bind="cfc:GettingData.getData()"
display="Tributary"
value="Tributary"
bindonload="true"
multiple="no"
size="6" />
</td>
<td>
<br />
Cruise Dates:<br />
<cfselect name="CruiseDate"
bind="cfc:GettingData.getDates({Tributary})"
bindonload="false"
type="link"
display="date"
value="CruiseDate"
multiple="no"
size="6"/>
</td>
<td>
<br>
Map Links:<br />
<cfselect name="link"
bind="cfc:GettingData.getmapname({CruiseDate},{Tributary})"
bindonload="false"
type="any"
display="File_html"
value="File_html"
multiple="no"
size="3"/>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<br />
</form>
<!--- submit button --->
<cfoutput> <input type="submit" name="submit" value="View Selected Maps" alt="View Map Selection Button"><br></cfoutput>
<!--- Reset button. --->
<input name="reset" type="reset" value="Clear Selections" alt="Clear Selections Button">
</td>
</tr>
</table>
</cfform>
</html>
第一個下拉是拉支流的列表,當選擇「支流」時,第二個下拉列表正確地填充「CruiseDates」列表。第三個下拉列表應該填入表格中的'File_html',該表格成爲打開另一個CFM上的數據映像圖的鏈接。 (這不是我的最終目標,這是我的嬰兒走在那裏。)
我遇到的問題是,第三個下拉菜單似乎沒有保持對第一個下拉選擇(支流)的依賴關係, ,所以當選擇CruiseDate,其中兩個支流恰好在同一日期採樣時,這兩個File_html名稱顯示在第三個下拉列表中(屏幕截圖): 在CFC中,在「getmapname」函數中,我試過使用2參數(這是我在網上看到的地方使用),這樣我可以重用的說法(與cfargument NAME =「映射文件」沿),因此,在過去的查詢,我可以做到以下幾點:
<cfquery name="data" datasource="mydatasource">
SELECT CruiseDate, Tributary, File_html
FROM df_cruises
WHERE CruiseDate='#ARGUMENTS.mapfile#' AND Tributary='#ARGUMENTS.Tributary#'
AND File_html<>'notsampled'
</cfquery>
這並沒有工作。當我有2個參數時,我得到錯誤,它似乎只允許1.
下面是第三個下拉列表的截圖,顯示雖然選擇了「返回河」,但它將拉動2個支流的File_html,同樣的日期:
我也開始研究javascript版本,但我也被困在這個,因爲這是如此接近我繼續工作在這種方法。但是,如果用這種方法做三重相關選擇是不可能的,我將不得不繼續前進!
任何幫助都會非常棒,謝謝! -B (抱歉,很長的文章,只是想徹底)
沒事就好的東西很難開始。你說'我遇到的問題是,第三個下拉菜單似乎沒有依賴於第一個下拉選擇。如果你有3個選擇,不應該第3個取決於第2個而不是第2個? –
我知道,對吧?是和不是,我想我希望第三個選擇依賴於第一個和第二個。所以你選擇了一個'支流',然後你選擇了'CruiseDate',第三個下拉框應該填入與'Tributary和CruiseDate'相關的數據的'File_html'鏈接,但是現在它填充了任何支流的鏈接在那天取樣。 – Becalecca
這是我看到使用2個參數的地方,但我無法使它工作: https://forums.adobe.com/thread/886531?start=0&tstart=0 – Becalecca