OK, I glad to know there is a way to just return a straight query
from a CFC...that is good to know. I did change my columnName in my
DG to all caps (is this still necessary in MX7?) and made changes to
my ActionScript code, however I am still getting a "value from
getPersonnel() of not type string" error.
Do I no longer need an array of structures in my CFC, and just return
a query result? Or, do I still need to put the results of the query
into an array of structures? I did try both ways however in my CFC,
and am still getting the same error regardless.
This is what I have:
************************
getPersonnel.cfc
************************
<cfcomponent displayname="getPersonnel">
<cffunction name="getPersonnel" access="remote" returntype="string">
<cfset var arrayResult = ArrayNew(1)/>
<cfquery name="getAllPersonnel" datasource="spotDB">
SELECT *
FROM dbo.ItemsInvolvedLOV
</cfquery>
<cfoutput query="getAllPersonnel">
<cfset structPersonnel = StructNew()/>
<cfset structPersonnel["ItemId"] = #getAllPersonnel.ItemId#>
<cfset structPersonnel["ItemType"] = #getAllPersonnel.ItemType#>
<cfset structPersonnel["ItemName"] = #getAllPersonnel.ItemName#>
<cfset arrayAppend(arrayResult,structPersonnel)/>
</cfoutput>
<cfreturn getAllPersonnel>
</cffunction>
</cfcomponent>
************************
personnelNeeded.MXML
************************
<mx:Script>
<![CDATA[
public var dp:Array;
private function doResult(result:Array):Void {
dp = result;
}
]]>
</mx:Script>
************************
Remote Object
************************
<mx:RemoteObject id="ro"
endpoint="http://IPADDRESS:PORT#/flashservices/gateway"
source="cfdocs.components.getPersonnel"
fault="mx.controls.Alert.show
(event.fault.faultstring, 'Error')"
showBusyCursor="true">
<mx:method name="getPersonnel" result="doResult
(event.result._items)"/>
</mx:RemoteObject>
************************
Datagrid
************************
<mx:DataGrid id="dgPersonnelNeeded" headerColor="#00CC33"
height="300" textAlign="left" width="100%" wordWrap="true"
editable="true" dataProvider="{dp}">
<mx:columns>
<mx:Array>
<mx:DataGridColumn headerText="Name" columnName="ITEMID"
width="225" />
<mx:DataGridColumn headerText="Title" columnName="ITEMTITLE"
width="650"/>
<mx:DataGridColumn headerText="Date" columnName="ITEMDATE"
width="100" />
</mx:Array>
</mx:columns>
</mx:DataGrid>
<mx:Button label="Get Records" textAlign="center" width="100"
click="{ro.getPersonnel()}"/>
--- In [email protected], "Stacey Mulcahy" <[EMAIL PROTECTED]>
wrote:
>
>
> Yep you'll need caps.
>
>
> -----Original Message-----
> From: [email protected]
[mailto:[EMAIL PROTECTED] On
> Behalf Of João Fernandes
> Sent: Friday, February 17, 2006 4:48 PM
> To: [email protected]
> Subject: RE: [flexcoders] calling a cfc from flex
>
>
> Welcome first of all,
>
> I don't know if you are aware that you can return directly a query
from the
> CFC. In flex side it will be available as event.result._items and
you are
> able to bind it directly as an Array.
>
> In your sample you could say in cfc:
>
> <cfreturn getAllPersonnel>
>
> in your mxml file you could have some
> public var dp:Array;
> private function doResult(result:Array):Void {
> dp = result;
> }
>
> in the Datagrid set the property dataProvider="{dp}"
> and just replace your remote object result to
> result="doResult(event.result._items)"
>
> I think, if I'm not mistaken, your datagridcolumns should have
columnName in
> upper case when dealing with CFC structures.
>
> Regards,
>
> João Fernandes
>
> -----Original Message-----
> From: [email protected] on behalf of rgwilson26
> Sent: Fri 17-Feb-06 6:11 PM
> To: [email protected]
> Subject: [flexcoders] calling a cfc from flex
>
> I am new to flex and working on calling a cfc that has a simple
query
> in it. I want my query to populate a datgrid with all pertinant
> information. I am having a hard time converting from an array to a
> string to populate the DG. Any help in what I am missing would be
> great, or if there is an easier way to call a query and return data
> would be great!
>
> ************************
> getPersonnel.cfc
> ************************
> <cfcomponent displayname="getPersonnel">
> <cffunction name="getPersonnel" access="remote" returntype="string">
>
> <cfset var arrayResult = ArrayNew(1)/>
>
> <cfquery name="getAllPersonnel" datasource="spotDB">
> SELECT *
> FROM dbo.ItemsInvolvedLOV
> </cfquery>
>
> <cfoutput query="getAllPersonnel">
> <cfset structPersonnel = StructNew()/>
> <cfset structPersonnel["ItemId"] = #getAllPersonnel.ItemId#>
> <cfset structPersonnel["ItemType"] = #getAllPersonnel.ItemType#>
> <cfset structPersonnel["ItemName"] = #getAllPersonnel.ItemName#>
> <cfset arrayAppend(arrayResult,structPersonnel)/>
> </cfoutput>
> <!--- Return Array to Flex--->
> <cfreturn getAllPersonnel>
> </cffunction>
> </cfcomponent>
>
>
> ************************
> personnelNeeded.MXML
> ************************
> ActionScript:
> ------------
> private function doResult(result:Array):Void {
>
> var personnelObject:Object = new Object(); object
> var personnelResult:Array = new Array();
>
> for(var i=0; i < result.length; i++){
> personnelObject = result[i];
> personnelResult.push(personnelObject);
> }
> dgPersonnelNeeded.dataProvider = personnelResult;
> }
>
> ************************
> Remote Object
> ************************
>
> <mx:RemoteObject id="ro"
> endpoint="http://10.95.20.39:8500/flashservices/gateway"
> source="cfdocs.components.getPersonnel"
> fault="mx.controls.Alert.show
> (event.fault.faultstring, 'Error')"
> showBusyCursor="true">
> <mx:method name="getPersonnel" result="doResult(event.result)"/>
>
> </mx:RemoteObject>
>
>
> ************************
> Datagrid
> ************************
>
> <mx:DataGrid id="dgPersonnelNeeded" headerColor="#00CC33"
> height="300" textAlign="left" width="100%" wordWrap="true"
> editable="true">
> <mx:columns>
> <mx:Array>
> <mx:DataGridColumn headerText="Name" columnName="name"
width="225" />
> <mx:DataGridColumn headerText="Title" columnName="title"
width="650"/>
> <mx:DataGridColumn headerText="Date" columnName="date"
width="100" />
> </mx:Array>
> </mx:columns>
> </mx:DataGrid>
>
>
> ************************
> Click event button
> ************************
> <mx:Button label="Get Records" textAlign="center" width="100"
> click="{ro.getPersonnel()}"/>
>
>
>
>
>
>
>
> --
> Flexcoders Mailing List
> FAQ:
http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Search Archives: http://www.mail-archive.com/flexcoders%
40yahoogroups.com
> Yahoo! Groups Links
>
--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/flexcoders/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/