Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

CFSelect: Getting 'bind' to work with selected values

Posted on 2009-04-06
6
Medium Priority
?
701 Views
Last Modified: 2012-05-06
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

0
Comment
Question by:MFredin
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 19

Expert Comment

by:erikTsomik
ID: 24081489
you need to include selected options

0
 

Author Comment

by:MFredin
ID: 24081572
erikTsomik,

Not clear on what you mean by selected options.  You mean the values I want to be selected?
0
 
LVL 27

Expert Comment

by:azadisaryev
ID: 24083725
"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
CHALLENGE LAB: Troubleshooting Connectivity Issues

Goal: Fix the connectivity issue in the lab's AWS environment so that you can SSH into the provided EC2 instance.  

 

Author Comment

by:MFredin
ID: 24087759
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
 
LVL 27

Accepted Solution

by:
azadisaryev earned 2000 total points
ID: 24094027
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
 

Author Comment

by:MFredin
ID: 24096637
Ah yes, makes sense!  Thanks!!
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

PROBLEM:  How to open a cfwindow or run a function on double click of a cfgrid row. One of my clients wanted to be able to double click on a row item to get more detailed information about a transaction and to be able to modify the line items i…
PROBLEM: How to add your own buttons to the bottom toolbar with paging info ( result count ). While creating a cfgrid, I ran into an issue where I wanted to embed my own custom buttons where the default ones ( insert / delete / etc… ) are for aes…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question