Flex 4.6:无法将<mx:datagrid>解析为组件实现</mx:datagrid>

时间:2012-09-25 01:54:05

标签: flex datagrid flex4.6

我很陌生。为Android设备构建“Flex应用程序”移动应用程序。 运行最新的Flex / FlashBuilder(4.6)。

查看项目属性: 建筑商:Flex&amp; AIR应用程序生成器 Flex编译器:“使用默认SDK(目前为”Flex 4.6.0“) 在我的设计视图中,我绝对看不到MX DataGrid控件。我通过粘贴此页面上最后一个示例中的代码将控件添加到我的应用程序: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf66ce9-7ff2.html

当我编译时,我收到此错误:“无法解析为组件实现”。这是我的代码:

<?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 个答案:

答案 0 :(得分:2)

mx:DataGrid不是移动优化组件,除非您明确添加MX SWC,否则不会出现在Flex Mobile项目中。 MX SWC应位于您的框架目录中。

查看

  

[Flex Framework目录] \ frameworks \ libs \ mx \ mx.swc

如果您在Windows上使用默认的Flash Builder安装;然后您的Flex Framework目录可能是这样的:

  

C:\ Program Files(x86)\ Adob​​e \ Adob​​e Flash Builder 4.6 \ sdks \ 4.6.0

您可以在项目设置的Flex Build Path页面中将SWC添加到库路径。

我不希望在移动设备上使用MX DataGrid获得非常好的性能,但我听说有人成功使用它。