2013-06-21 3 views
0

Я запускаю Coldfusion 10,0,8,284032 в Windows Server 2008 R2 Datacenter с SQL Server 2012 в качестве источника данных.populating select на основе предыдущего выбора - как запустить запрос после выбора

Я хотел бы создать два варианта на форме. Один, который имеет название заповедников дикой природы, а другой, в котором перечислены следы в этом заповеднике после того, как был выбран заповедник. У меня есть заповедники и трейлы в таблице db dbo.reserveandtrail, которая имеет cols для ID, trailname и reserveename.

У меня возникла проблема с тем, как выдать запрос для выбора дорожек, когда в раскрывающемся списке выбран параметр сохранения. Можно ли сделать это просто с помощью CF или я должен смотреть в JS/Ajax?

+1

Есть много примеров там ... см http://stackoverflow.com/questions/13414175/dynamic- drop-down-list-in-coldfusion-9 для образца. –

+0

Я считаю, что атрибут bind cfinput или cfselect является очень простым способом для этого. Google из этих тегов для примеров. Убедитесь, что вы выполняете свои запросы и функции cfc, прежде чем пытаться использовать их с ajax. –

+0

Вы можете сделать это, используя только CF, но форма будет обновляться и переходить на другую страницу, и она будет выглядеть так 90 секунд. – Henry

ответ

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>