Adobe Flex错误尝试在网格中渲染DropdownList

时间:2017-07-26 16:07:04

标签: flex

首先让我说我对Adobe Flex一无所知。这个应用程序是由承包商创建的,然后在内部带回来,这里的开发人员都不知道有关Flex的任何信息。我试图渲染一个简单的下拉列表,但收到错误"访问未定义属性shipstatusArray"。

以下是下拉列表的xml:

                        <s:GridColumn headerText = "Shipping Status">
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer >   
                                    <s:DropDownList id="myDDL" width="140" dataProvider="{shipstatusArray}" > 

                                    </s:DropDownList>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>

这是定义:

            [Bindable]public var shipstatusArray:ArrayCollection = new ArrayCollection([{id:1, name:'In Progress'},
            {id:2, name:'Completed'}]);

我不确定需要什么,所以这里是整个代码页:

<?xml version="1.0" encoding="utf-8"?>

             

        import mx.collections.ArrayCollection;
        import mx.controls.Alert;
        import mx.events.FlexEvent;
        import mx.rpc.events.ResultEvent;
        import mx.utils.ObjectUtil;
        import mx.utils.StringUtil;
        import spark.events.IndexChangedEvent;

        import qs.utils.StringUtils;
        [Bindable]public var model:PECToolsModel = PECToolsModel.getInstance();
        [Bindable]public var company:CompanyDetailsVO;
        [Bindable]public var selectedItem:Object = new Object();
        [Bindable]public var mainDataObj:Object = new Object();
        [Bindable]public var TypeID:int;
        [Bindable]public var DepartmentID:int;
        [Bindable]public var gridtype:int;
        [Bindable]public var WOVO:WorkOrderHomeVO;
        [Bindable]public var EditWODetails:WorkOrderDetailsHome;
        [Bindable]public var shipstatusArray:ArrayCollection = new ArrayCollection([{id:1, name:'In Progress'},
            {id:2, name:'Completed'}]);


        public function dgIbWorkOrders_doubleClickHandler(event:MouseEvent):void
        {
            if(TypeID == 2)
            {
                if(dgWorkOrders.selectedItem)
                {   
                    if(!(dgWorkOrders.selectedItem.WorkOrderReturnID))
                    {
                        model.isFromPendingDocuments = false;
                        model.isfromCompUserlist = false;
                        model.isfromMyDashBoard = false;
                        model.isfromSalesDashBoard = false;                     
                        model.reportsObj = null;
                        model.isFromIBD = false;
                        model.isFromMenu = false;
                        Setpop();                           
                    }
                    else
                        Alert.show(model.AlertWork12 ,model.alertLabel2);

                }
                else
                    Alert.show(model.alertLabel3, model.alertLabel2);
            }

        }
        public function Setpop():void
        {
            WOVO = new WorkOrderHomeVO();
            WOVO.WorkOrderID = dgWorkOrders.selectedItem.WorkOrderID;
            EditWODetails = model.tabManager.openWO(WOVO );
            if(EditWODetails != null)
            {
                model.WorkOrderIDArray.push(WOVO.WorkOrderID);
                new UpdateWorkOrderAuditProcessEvent(String(dgWorkOrders.selectedItem.WorkOrderID), 1,null).dispatch();
                EditWODetails.mainDataObj = this;
                EditWODetails.mode = "Edit";
                EditWODetails.SelectedWOObj = dgWorkOrders.selectedItem as Object;
                EditWODetails.isFromCompModule = false;
                EditWODetails.isFromWODashboard = true;
                EditWODetails.isFromWOModule = false;
                EditWODetails.isFromAccDashboard = false;
                EditWODetails.gridtype = gridtype;
                EditWODetails.CreateControl();
            }
        }



        public function SetLabel():void
        {
            if(TypeID == 1)//Total
            {
                if(mainDataObj.WorkOrderlistArray[1].value !=  0)
                {
                    frm1.title = selectedItem.name ;
                    mainvg.visible = true;
                    mainvg.includeInLayout =true;
                }
                else
                {
                    frm1.title = selectedItem.name + " : No Data";
                    mainvg.visible = false;
                    mainvg.includeInLayout = false;
                }
            }
            else if(TypeID == 2)//inprogress/To be processed
            {
                if(mainDataObj.WorkOrderlistArray[2].value !=  0)
                {
                    frm1.title = selectedItem.name ;
                    mainvg.visible = true;
                    mainvg.includeInLayout =true;
                }
                else
                {
                    frm1.title = selectedItem.name + " : No Data";
                    mainvg.visible = false;
                    mainvg.includeInLayout = false;
                }
            }
            else if(TypeID == 3)//Due/processed
            {
                if(mainDataObj.WorkOrderlistArray[3].value !=  0)
                {
                    frm1.title = selectedItem.name ;
                    mainvg.visible = true;
                    mainvg.includeInLayout =true;
                }
                else
                {
                    frm1.title = selectedItem.name + " : No Data";
                    mainvg.visible = false;
                    mainvg.includeInLayout = false;
                }
            }
        }

        protected function group1_creationCompleteHandler(event:FlexEvent):void
        {
            SetLabel();
        }

        public function frm1_ViewHandler(event:Event):void
        {
            if(dgWorkOrders.selectedItem)
            {   
                printInvoice();
            }
            else
                Alert.show(model.alertLabel3 ,model.alertLabel2)
        }

        private function printInvoice():void
        {
            model.isCompanyOrderPayment = false;
            var strSessionID:String = "";
            strSessionID = Utils.generateRandomString(8);
            new UpdateUserSessionForFileViewEvent(model.loggedinUser.UserID, strSessionID, dgWorkOrders.selectedItem.WorkOrderID, this, 2).dispatch(); //TypeID=2, for Invoice PDF
        }

        public function viewDocumentBySessionID(invoiceSessionID:String):void
        {
            navigateToURL(new URLRequest(model.WorkOrderUrlPDF + invoiceSessionID),"_blank");
        }
    ]]>
</fx:Script>

<fx:Declarations>
    <mx:DateFormatter id="dtFormatter" formatString="MM/DD/YYYY"/>
    <mx:DateFormatter id="dtformat" formatString="MM/DD/YYYY  H:NN:SS A"/>
</fx:Declarations>

<controls:CustomLayoutPanel id="frm1"  width="100%"   height="100%" >
    <s:VGroup  width="100%" height="100%" visible="false" id="mainvg"
               includeInLayout="false">

        <s:DataGrid id="dgWorkOrders" dataProvider="{mainDataObj.UserWorkorderArray}" 
                    doubleClickEnabled="{mainDataObj.UserWorkorderArray.length &gt; 0}" doubleClick="dgIbWorkOrders_doubleClickHandler(event)"
                    variableRowHeight="true" width="100%" height="100%" 
                    toolTip="{(mainDataObj.UserWorkorderArray.length &gt; 0)&amp;&amp;(TypeID==2) ? 'Double-Click to view Work Orders' : ''}"
                    skinClass="com.pec.tools.controls.VerificationGridHeader" >
            <s:rowBackground>
                <fx:Component>
                    <home:WorkOrderGridRowHighlightRenderer/>
                </fx:Component>
            </s:rowBackground>
            <s:columns>
                <s:ArrayList>   
                    <s:GridColumn dataField="intSSQID" headerText="Company ID" width="90" visible="{TypeID ==2?true:false}">
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer >   
                                    <s:Label  text="{data.intSSQID}" visible="{data.intSSQID &gt; 9990000  ? true : false}" includeInLayout="{data.intSSQID &gt; 9990000  ? true: false}" verticalCenter="0"  horizontalCenter="0" verticalAlign="middle"/>
                                    <mx:LinkButton  label="{data.intSSQID}" visible="{(data.intSSQID != 0 &amp;&amp; data.intSSQID &lt; 9990000)}" includeInLayout="{data.intSSQID != 0 &amp;&amp; data.intSSQID &lt; 9990000 }" verticalCenter="0"  horizontalCenter="0"  
                                                    textDecoration="underline" color="blue" click="{outerDocument.dgIbWorkOrders_doubleClickHandler(null)}"/>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>
                    <s:GridColumn dataField="vchinvoiceno" headerText="Invoice #" width="100">
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer >   
                                    <mx:LinkButton  label="{data.vchInvoiceNo}" visible="{data.vchinvoiceno != ''}" includeInLayout="{data.vchinvoiceno != ''}" paddingLeft="15" height="100%" 
                                                    textDecoration="underline" toolTip="Click here to print invoice" color="blue" click="{outerDocument.frm1_ViewHandler(null)}"/>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>
                    <s:GridColumn dataField="dteInvoiceDate" headerText="Invoice Date" width="100">
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer>
                                    <s:Label  text="{outerDocument.dtFormatter.format(data.dteInvoiceDate)}" verticalCenter="0"  horizontalCenter="0" verticalAlign="middle"/>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>
                    <s:GridColumn  id = "compicon" headerText="Company Name" >

                    <s:itemRenderer>
                        <fx:Component>
                            <s:GridItemRenderer >

                                <s:HGroup verticalAlign="middle" width="100%" height="100%" >
                                    <s:Image id="profileImage"   source="@Embed('/assets/priority.png')" visible="{data.PriorityIDs != 3}" includeInLayout = "{data.PriorityIDs != 3}" />
                                    <s:Label  text="{data.vchCompanyName}" maxDisplayedLines="3" paddingTop="3" paddingLeft="2" width="100%"/>
                                </s:HGroup>
                            </s:GridItemRenderer>
                        </fx:Component>
                    </s:itemRenderer>
                    </s:GridColumn>
                    <s:GridColumn dataField="WorkOrderStatus" headerText="Status" visible="{TypeID==1||TypeID==3}" width="90"   >
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer >   
                                    <s:Label  text="{data.WorkOrderStatus}" horizontalCenter="0" verticalAlign="middle" verticalCenter="0"/>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>
                    <s:GridColumn headerText="Created Date" >
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer >   
                                    <s:Label  text="{outerDocument.dtformat.format(data.dteCreatedDate)}" horizontalCenter="0" verticalAlign="middle" verticalCenter="0"/>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>
                    <s:GridColumn headerText = "Shipping Status">
                        <s:itemRenderer>
                            <fx:Component>
                                <s:GridItemRenderer >   
                                    <s:DropDownList id="myDDL" width="140" dataProvider="{shipstatusArray}" > 

                                    </s:DropDownList>
                                </s:GridItemRenderer>
                            </fx:Component>
                        </s:itemRenderer>
                    </s:GridColumn>
                </s:ArrayList>
            </s:columns>
        </s:DataGrid>
        <s:HGroup width="100%" paddingLeft="7" paddingBottom="3" verticalAlign="middle">
            <s:Label text="Total WorkOrders: {mainDataObj.UserWorkorderArray.length}" />
            <s:HGroup width="100%" horizontalAlign="right" paddingRight="3" visible="{mainDataObj.UserWorkorderArray.length &gt; 0}">
                <mx:Box backgroundColor="0xF7FE2E">
                    <mx:Text text="Work Order in Process by another User" fontWeight="bold"/>
                </mx:Box>                   
            </s:HGroup>
        </s:HGroup>
    </s:VGroup>
</controls:CustomLayoutPanel>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您发布的代码段似乎缺少开始标记<fx:Script>。请添加。

为您的值添加双引号。

[Bindable]public var shipstatusArray:ArrayCollection = new ArrayCollection([{id:"1", name:"In Progress"}, {id:"2", name:"Completed"}]);

使用labelField指示您要显示的字段。

<s:DropDownList id="myDDL" width="140" dataProvider="{shipstatusArray}" labelField="name" /> 

您可以使用this link作为参考。