CFSelect: Getting 'bind' to work with selected values

Hey Guys,

I've got a couple cfselects i'm binding.  Everything is working great, except there really isn't any out of the box solution to preselect the values if you are, for example, using the form to edit records.  I found a few articles on some workarounds and this one seemed to work for others... http://www.stevenksavage.com/content/500/3.en.cfm

My problem is I'm still a CF n00b and I can't figure out how to implement this fix.  So I'm hoping someone can point me in the right direction with this.

Here is what I have for code...  How could I implement the fix to the preselect values?
<!---------------------------Here are my cfselects -------------------------------->
<cfselect name="sale_buyer_id" id="sale_buyer_id" size="1" bind="cfc:lots.addWindow.getSaleBuyers4cfselect()" bindonload="true" display="sale_buyer_Name" value="sale_buyer_id" />
 
<cfselect name="sale_buyer_yard_id" id="sale_buyer_yard_id" bind="cfc:lots.addWindow.getSaleBuyerYards4cfselect({sale_buyer_id})" bindonload="false" display="sale_buyer_yard" value="sale_buyer_yard_id" />
 
 
<!---------------------------Here are my functions --------------------------------->
<cfcomponent displayname="populate">
 
<!--- Sale Buyers CFC to fill the cfselect query --->
<cffunction name="getSaleBuyers4cfselect" access="remote" returntype="query" output="false">
<cfset var qGetSaleBuyers="">
 
<cfquery name="qGetSaleBuyers" datasource="#request.dsn#">
SELECT sale_buyer_id, sale_buyer_name
FROM sale_buyer
ORDER BY sale_buyer_name
</cfquery>
 
<cfreturn qGetSaleBuyers />
</cffunction>
 
<!--- Sale Buyer Yards CFC to fill the cfselect query --->
<cffunction name="getSaleBuyerYards4cfselect" access="remote" returntype="query" output="false">
<cfargument name="sbid" required="no" default="0">
<cfset var qGetSaleBuyerYards="">
 
<cfquery name="qGetSaleBuyerYards" datasource="#request.dsn#">
SELECT sale_buyer_yard_id, sale_buyer_yard
FROM sale_buyer_yard
<cfif arguments.sbid gt 0>
WHERE sale_buyer_id = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.sbid#">
</cfif>
ORDER BY sale_buyer_yard
</cfquery>
 
<cfreturn qGetSaleBuyerYards />
 
</cffunction>
 
</cfcomponent>

Open in new window

MFredinAsked:
Who is Participating?
 
azadisaryevCommented:
you need a different js variable to control the second cfselect. right now you have imdone js variable in both functions - rename it to something else in the second function.

Azadi
<cfajaxproxy bind="javascript:test({sale_buyer_id},2)"><!--- for Sale_Buyer_Id --->
<cfajaxproxy bind="javascript:test2({sale_buyer_yard_id},3)"><!--- for Sale_Buyer_Yard_Id --->
<script type="text/javascript">
var imdone = false; // var for Sale_Buyer_Id
var imdone2 = false; // var for Sale_Buyer_Yard_Id
function test(x,val) { // function for Sale_Buyer_Id
 if(!imdone) {
  var dd = document.getElementById('sale_buyer_id');
  for(var i = 0; i < dd.length; i++){
   if(dd.options[i].value == val){
    dd.selectedIndex = i;
   }
  }
  imdone = true;
 }
}
function test2(x,val) { // function for Sale_Buyer_Yard_Id
 if(!imdone2) {
  var dd = document.getElementById('sale_buyer_yard_id');
  for(var i = 0; i < dd.length; i++){
   if(dd.options[i].value == val){
    dd.selectedIndex = i;
   }
  }
  imdone2 = true;
 }
}
</script>

Open in new window

0
 
erikTsomikSystem Architect, CF programmer Commented:
you need to include selected options

0
 
MFredinAuthor Commented:
erikTsomik,

Not clear on what you mean by selected options.  You mean the values I want to be selected?
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
azadisaryevCommented:
"selected" attribute does NOT work in cfselects with bindings.
here's a very good solution using a bit of js and <cfajaxproxy>:
http://www.coldfusionjedi.com/index.cfm/2007/8/7/Selecting-default-items-using-ColdFusion-8s-AJAX-Controls

steven's solution (the link you posted) looks interesting, but i have not yet been able to make it work...

Azadi
0
 
MFredinAuthor Commented:
Thanks Azadi,

The solution you linked to works for the first select box, but I can't seem to get it working on the second select box.  
<!--- Pre Select the Sale_Buyer_Id form element --->
<cfajaxproxy bind="javascript:test({sale_buyer_id},2)">
<script>
var imdone = false;
function test(x,val) {
if(!imdone) {
var dd = document.getElementById('sale_buyer_id');
for(var i = 0; i < dd.length; i++){
if(dd.options[i].value == val){
dd.selectedIndex = i;
 
}
}
imdone = true;
}
}
</script>
 
<!--- Pre Select the Sale_Buyer_Yard_Id form element --->
<cfajaxproxy bind="javascript:test2({sale_buyer_yard_id},3)">
<script>
var imdone = false;
function test2(x,val) {
if(!imdone) {
var dd = document.getElementById('sale_buyer_yard_id');
for(var i = 0; i < dd.length; i++){
if(dd.options[i].value == val){
dd.selectedIndex = i;
 
}
}
imdone = true;
}
}
</script>

Open in new window

0
 
MFredinAuthor Commented:
Ah yes, makes sense!  Thanks!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.