3
votes

I'm very new at this. Building a "Flex Application" mobile app for Android devices. Running the latest Flex/FlashBuilder (4.6).

Looking at Project Properties: Builders: Flex & AIR application Builder Flex Compiler: "Use default SDK (currently "Flex 4.6.0") In my design view I definitely don't see a MX DataGrid control. I added the control to my app by pasting code from the last example on this page: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf66ce9-7ff2.html

When I compile I get this error: "could not resolve to a component implementation". Here is my code:

<?xml version="1.0" encoding="utf-8"?>
<!-- dpcontrols/DataGridPassData.mxml -->
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
                    xmlns:s="library://ns.adobe.com/flex/spark"
                    xmlns:mx="library://ns.adobe.com/flex/mx" 
                    title="Jobs List">
          <fx:Script>
                    <![CDATA[
                              import mx.collections.*;
                              private var DGArray:Array = [
                                        {Lease:'Bagby Heirs', Well:'1', Location:'Quitman', Customer:'Fair Oil Company', ScheduleDate:'2/23/2012', ServiceDate:'5/16/2012'},
                                        {Lease:'ITU', Well:'301', Location:'Ingram Trinity', Customer:'Southwest Operating, Inc.', ScheduleDate:'3/19/2012', ServiceDate:'4/25/2012'},
                                        {Lease:'ITU', Well:'81', Location:'ITU', Customer:'Southwest Operating, Inc.', ScheduleDate:'3/19/2012', ServiceDate:'4/25/2012'},
                                        {Lease:'Tolliver A', Well:'5', Location:'Turner Town', Customer:'SEDI', ScheduleDate:'4/16/2012', ServiceDate:'5/11/2012'},
                                        {Lease:'W R Cady', Well:'1', Location:'Coffield', Customer:'Green River Resource', ScheduleDate:'5/9/2012', ServiceDate:'4/10/2012'},
                                        {Lease:'Royal National Bar', Well:'2', Location:'Coffield', Customer:'Green River Resource', ScheduleDate:'5/9/2012', ServiceDate:'4/10/2012'},
                                        {Lease:'Pan American L', Well:'1', Location:'Chandler', Customer:'East Texas Oil & Gas', ScheduleDate:'5/14/2012', ServiceDate:'6/8/2012'},
                                        {Lease:'Paluxy B Sand', Well:'5', Location:'West Tyler', Customer:'Culver & Cain', ScheduleDate:'6/1/2012', ServiceDate:'5/25/2012'},
                                        {Lease:'Wh Pittman Hei', Well:'2', Location:'Quitman', Customer:'Southwest Operating, Inc.', ScheduleDate:'7/10/2012', ServiceDate:'6/18/2012'},
                                        {Lease:'Vivian Pruitt', Well:'1', Location:'Crow - Hwy 80M', Customer:'Buffco Productions, Inc.', ScheduleDate:'8/7/2012', ServiceDate:'8/29/2012'}
                              ];

                              [Bindable]
                              public var initDG:ArrayList;

                              //Initialize initDG ArrayList variable from the Array.
                              //If you use this technique to process an HTTPService,
                              //WebService, or RemoteObject result, use an ArrayCollection
                              //rather than an ArrayList.
                              public function initData():void {
                                        initDG=new ArrayList(DGArray);
                              }
                    ]]>
          </fx:Script>
          <!--s:states>
          <s:State name="loginState"/>
          <s:State name="State1"/>
          </s:states-->

          <fx:Declarations>

                    <!-- Place non-visual elements (e.g., services, value objects) here -->
                      <fx:Component className="AlertMsgDay">
                              <s:SkinnablePopUpContainer x="70" y="300">
                                        <s:TitleWindow title="Filtering" close="close()">
                                                  <s:VGroup horizontalAlign="center" paddingTop="8" paddingBottom="8" paddingLeft="8" paddingRight="8" gap="5" width="100%">
                                                            <s:Label text="This button will filter jobs to show only TODAY."/>
                                                            <s:Button label="OK" click="close()"/>
                                                  </s:VGroup>
                                        </s:TitleWindow>
                              </s:SkinnablePopUpContainer>
                    </fx:Component>

                    <fx:Component className="AlertMsgWeek">
                              <s:SkinnablePopUpContainer x="70" y="300">
                                        <s:TitleWindow title="Filtering" close="close()">
                                                  <s:VGroup horizontalAlign="center" paddingTop="8" paddingBottom="8" paddingLeft="8" paddingRight="8" gap="5" width="100%">
                                                            <s:Label text="This button will filter jobs to show only THIS WEEK."/>
                                                            <s:Button label="OK" click="close()"/>
                                                  </s:VGroup>
                                        </s:TitleWindow>
                              </s:SkinnablePopUpContainer>
                    </fx:Component>

          </fx:Declarations>

          <s:BorderContainer x="10"  y="111" borderColor="#808080" cornerRadius="5" borderWeight="2" width="98%" height="369">
                    <s:Scroller width="100%" height="363" verticalScrollPolicy="on">
                              <s:Group width="100%" height="100%">


                                        <mx:DataGrid id="myGrid" width="900" height="350" dataProvider="{initDG}" >  <<<< THE ERROR IS HERE
                                                  <mx:columns>
                                                            <mx:DataGridColumn dataField="Lease" />
                                                            <mx:DataGridColumn dataField="Well" />
                                                            <mx:DataGridColumn dataField="Location" />
                                                            <mx:DataGridColumn dataField="Customer" />
                                                            <mx:DataGridColumn dataField="ScheduleDate" headerText="Schedule Date" />
                                                            <mx:DataGridColumn dataField="ServiceDate" headerText="Service Date" />
                                                  </mx:columns>
                                        </mx:DataGrid>

                              </s:Group>
                    </s:Scroller>
          </s:BorderContainer>

          <s:Label x="10" y="10" width="96" height="53" fontSize="24" text="Sort by:"
                               verticalAlign="middle"/>
          <s:Button id="btn_show_today" x="104" y="11" width="105" height="53" label="Today"
                                fontSize="13" fontWeight="bold" click="(new AlertMsgDay()).open(this, false);"/>
          <s:Button id="btn_show_week" x="216" y="11" width="105" height="53" label="Week"
                                fontSize="13" fontWeight="bold" click="(new AlertMsgWeek()).open(this, false);"/>
          <s:Button x="348" y="10" width="184" height="53" label="Edit this Job" fontSize="18" click="navigator.pushView(views.JobFormView);"/>
</s:View>
1
Instead of using the mx DataGrid, try using the spark one. Works right out of the box. Performance isn't any better though. Still way too slow for a mobile device. My recommendation, use a List with LabelItemRenderers that mimic a grid look.AlBirdie
Thanks! Where do I look for custom renderers?ScotterMonkey

1 Answers

3
votes

The mx:DataGrid is not a mobile optimized component and will not appear in a Flex Mobile project unless you explicitly add the MX SWC. The MX SWC should be located in your framework directory.

Look in

[Flex Framework directory]\frameworks\libs\mx\mx.swc

If you're using a default Flash Builder install on Windows; then your Flex Framework Directory will probably be something like this:

C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0

You can add the SWC to your library path in the Flex Build Path page of the project settings.

I wouldn't expect to get very good performance out of an MX DataGrid on a mobile device, but I have heard of people having success with it.