3

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

查看项目属性: Builders: Flex & AIR application Builder Flex Compiler: "Use default SDK (currently "Flex 4.6.0") 在我的设计视图中,我绝对看不到 MX DataGrid 控件。我将控件添加到我的应用程序通过粘贴此页面上最后一个示例中的代码:http: //help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf66ce9-7ff2.html

编译时出现此错误:"could not resolve to a component implementation"。这是我的代码:

<?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>
4

1 回答 1

3

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

在看

[Flex 框架目录]\frameworks\libs\mx\mx.swc

如果您在 Windows 上使用默认的 Flash Builder 安装;那么你的 Flex 框架目录可能是这样的:

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

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

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

于 2012-09-25T02:01:46.373 回答