Gerald asks,
Ray, I am trying to get back to a tabbed page from my process.cfm by checking for the existance of the btn that submitted the form (each tab has it's own unique button for submitting to process.cfm). Then I set a URL var and cfrelocation back to the flash form where the selectedItem="#url.currtab#". Works great except the darn flash form reinitializes every time because that attribute gets changed. How can I do this without causing a recompile of the form?
Yes, it is possible - and this solution comes right from Mike Nimer (aka 'The Flash Form Guy'). Instead of using selectedIndex="#url.currTab#", you can bind the value to a hidden form field. Consider:
<cfparam name="url.tab" default="0">
<cfform format="flash" width="400" height="200" name="foo">
<cfinput type="hidden" name="thetab" value="#url.tab#">
<cfformgroup type="tabnavigator" selectedIndex="{foo.thetab.text}">
<cfformgroup type="page" label="Tab One" />
<cfformgroup type="page" label="Tab Two" />
<cfformgroup type="page" label="Tab Three" />
<cfformgroup type="page" label="Tab Four" />
</cfformgroup>
</cfform>
<cfoutput>
<a href="#cgi.script_name#?tab=0">Tab 1</a><br>
<a href="#cgi.script_name#?tab=1">Tab 2</a><br>
<a href="#cgi.script_name#?tab=2">Tab 3</a><br>
<a href="#cgi.script_name#?tab=3">Tab 4</a><br>
</cfoutput>
Notice how the value for selectedIndex isn't hard coded, but bound to the hidden form field. Also note how you have to use formname.fieldname when binding to a hidden field. For a non-hidden field, you can just use fieldname. Also note that the selectedIndex for a navigator item is 0 based - in other words, tab 1 is index 0, tab 2 is index 1, etc.
Enjoy - and again - thank Nimer for this tip. (Unless it is broken - then um - it is a Microsoft bug. Yeah, that's it!)