Hi, Guru,
I tried to implement the CF_TwoSelectsRelated tag from the Developer's
Exchange and got an error of evaluting the expression:
MyQuery=Evaluate("Caller.#Attributes.Query#")
I have been looking at it too long and lost my brain. Can anyone help to point
out what mistake that I made? Please feel free to make any comment. Your
enlightment is greatly appreicated.
Here is the code straight out from the tag with some modification. Thank you.
<cfparam name="Attributes.Query" default="Server.Cats">
<cfparam name="Attributes.Display1" default="MASTER_CAT">
<cfparam name="Attributes.Display2" default="CAT">
<cfparam name="Attributes.Value1" default="#Attributes.Display1#">
<cfparam name="Attributes.Value2" default="#Attributes.Display2#">
<cfparam name="Attributes.Name1" default="TwoSelectsRelated1">
<cfparam name="Attributes.Name2" default="TwoSelectsRelated2">
<cfparam name="Attributes.Size1" default="1">
<cfparam name="Attributes.Size2" default="1">
<cfparam name="Attributes.Width1" default="">
<cfparam name="Attributes.Width2" default="">
<cfparam name="Attributes.ForceWidth1" default="">
<cfparam name="Attributes.ForceWidth2" default="">
<cfparam name="Attributes.ForceWidthChar" default=" ">
<cfparam name="Attributes.EmptyText1" default="">
<cfparam name="Attributes.EmptyText2" default="">
<cfparam name="Attributes.Message1" default="You must choose an option for
#Attributes.Name1#.">
<cfparam name="Attributes.Message2" default="You must choose an option for
#Attributes.Name2#.">
<cfparam name="Attributes.FormName" default="TwoSelected">
<cfparam name="Attributes.HTMLBetween" default="">
<cfparam name="Attributes.OnChange" default="">
<cfparam name="Attributes.AutoselectFirst" default="Yes">
<cfset FunctionName=ReplaceList(Attributes.FormName, "[,]", ",") &
"ChangeMenu()">
<cfif Attributes.OnChange is "Jump!">
<cfset
Attributes.OnChange="document.location=this.options[selectedIndex}.value;">
<cfelseif Attributes.OnChange is "Submit!">
<cfset Attributes.OnChange="this.form.submit();">
</cfif>
<!--- use passed query width this code as "MyQuery" --->
<cfset MyQuery=Evaluate("Caller.#Attributes.Query#")>
<cfquery name="Server.Cats" datasource="CompanyInfo" dbtype="ODBC">
SELECT MASTER_CAT FROM Cats
</cfquery>
<cfquery name="Server.Cats" datasource="CompanyInfo" dbtype="ODBC">
SELECT CAT FROM Cats
</cfquery>
<cfoutput>
<script language="JavaScript1.1">
var maxlength=10;
OneA=new Array;
var trueLength=OneA.length;
var lst=OneA.length;
function require_#Attributes.Name1#() {
with (document.#Attributes.FormName#.#Attributes.Name1#) {
RetVal=true;
if (options[selectedIndex]==null) RetVal=false;
else RetVal=!(options[selectedIndex].value=='');
if (!RetVal) alert('#Attributes.Message1#');
return RetVal
}
}
function require_#Attributes.Name2#() {
with (document.#Attributes.FormName#.#Attributes.Name2#) {
RetVal=true;
if (options[selectedIndex]==null) RetVal=false;
else RetVal=!(options[selectedIndex].value=='');
if (!RetVal) alert('#Attributes.Message2#');
return RetVal
}
}
function require_#Attributes.Name1#And#Attributes.Name2#() {
return ((require_#Attributes.Name1#()) && (require_#Attributes.Name2#()));
}
function #FunctionName# {
OneA.length=0;
menuNum=document.#Attributes.FormName#.#Attributes.Name1#.selectedIndex;
if (menuNum==null) return;
</cfoutput>
<cfset Counter=IIF(Attributes.EmptyText1 is not "", 1, 0)>
<cfoutput query="MyQuery" group="#Attributes.Display1#">
if (menuNum==#Counter#) {
NewOpt=new Array;
NewVal=new Array;
<cfset Counter2=IIF(Attributes.EmptyText2 is not "", 1, 0)>
<cfif Attributes.EmptyText2 is not "">
<cfoutput>
NewOpt[0]=new Option("#Attributes.EmptyText2#");
NewOpt[0].value='';
</cfoutput>
</cfif>"
<cfoutput>
NewOpt[#Counter2#]=new Option("#Evaluate(Attributes.Display2)#");
NewOpt[#Counter2#].value='#Evaluate(Attributes.Value2)#';
<cfset Counter2=Counter2 + 1>
</cfoutput>
}
<cfset Counter=Counter + 1>
</cfoutput>
<cfoutput>
tot=NewOpt.length;
lst=document.#Attributes.FormName#.#Attributes.Name2#.options.length;
for (i=lst; i>0; i--) {
document.#Attributes.FormName#.#Attributes.Name2#.options[i]=null;
}
for (i=0; i<tot; i++) {
document.#Attributes.FormName#.#Attributes.Name2#.options[i]=NewOpt[i];
}
<cfif Attributes.AutoSelectFirst is "Yes">
document.#Attributes.FormName#.#Attributes.Name2#.options0].selected=true;
</cfif>
}
</script>
</cfoutput>
<cfif Attributes.Size1 is "Auto">
<cfset Attributes.Size1=Counter>
</cfif>
<cfif Attributes.Size2 is "Auto">
<cfset Attributes.Size2=Attributes.Size1>
</cfif>
<cfoutput>
<select name="#Attributes.Name1#"
onChange="#FunctionName#"
size="#Attributes.Size1#"
<cfif Attributes.Width1 is not "">
style="width:#Attributes.Width1#"
</cfif>
>
</cfoutput>
<cfif Attriubtes.EmptyText1 is not "">
<cfoutput>
<option value="">
#Attributes.EmptyText1#
</cfoutput>
</cfif>
<cfoutput query="MyQuery" group="#Attributes.Display1#">
<option value="#Evaluate(Attributes.Value1)#">
#Evaluate(Attributes.Display1)#
</cfoutput>
<cfif Attributes.ForceWidth1 is not "">
<cfoutput>
<option value="">
#RepeatString(Attributes.ForceWidthChar, Attributes.ForceWidth1)#
</cfoutput>
</cfif>
<cfoutput></select></cfoutput>
<cfoutput>#Attributes.HTMLBetween#</cfoutput>
<cfoutput>
<select name="#Attributes.Name2#" size="#Attributes.Size2#"
<cfif Attributes.OnChange is not "">
OnChange="#Attributes.OnChange#"
</cfif>
<cfif Attributes.Width2 is not "">
style="width:#Attributes.Width2#"
</cfif>
>
</cfoutput>
<cfif Attributes.EmptyText2 is not "">
<cfoutput>
<option value="">
#Attributes.EmptyText2#
</cfoutput>
</cfif>
<cfset FirstGroup=Evaluate("MyQuery.#Attriubtes.Display1#")>
<cfif Attributes.EmptyText1 is "">
<cfloop query="MyQuery">
<cfif Evaluate(Attributes.Display1) is FirstGroup>
<cfoutput>
<option value="#Evaluate(Attributes.Value2)#">
#Evaluate(Attributes.Display2)#
</cfoutput>
<cfelse>
<cfbreak>
</cfif>
</cfloop>
</cfif>
<cfif Attributes.ForceWidth2 is not "">
<cfoutput>
<option value="">
#RepeatString(Attributes.ForceWidthChar, Attributes.ForceWidth2)#
</cfoutput>
</cfif>
<cfoutput></select></cfoutput>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists