2015-03-31 81 views
1

AdvancedDataGrid的边界正在消失。我使用弹出对象的同一个实例在不同的时间显示。AdvancedDataGrid的边界在弹出消失

第一次弹出窗口和ADG边框很好,但是当我下次启动弹出窗口时,边框消失了。虽然边框重新出现,如果我尝试调整列大小。我无法得到这个问题的原因,因此也无法纠正它。

我试图重新调整ADG的可见性,并试图调用invalidateDisplayList(),但没有成功。

* ADG = AdvancedDataGrid 我附加了代码片段。

<?xml version="1.0" encoding="utf-8"?> 
 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
 
\t \t \t \t \t xmlns:s="library://ns.adobe.com/flex/spark" 
 
\t \t \t \t \t xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="onCC()" width="1500" height="1000"> 
 
\t <s:layout> 
 
\t \t <s:VerticalLayout /> 
 
\t </s:layout> 
 
\t <fx:Script> 
 
\t \t <![CDATA[ 
 
\t \t \t import mx.collections.ArrayCollection; 
 
\t \t \t import mx.controls.advancedDataGridClasses.AdvancedDataGridSortItemRenderer; 
 
\t \t \t import mx.managers.PopUpManager; 
 
\t \t \t [Bindable]private var dp:ArrayCollection = new ArrayCollection(); 
 
\t \t \t 
 
\t \t \t private function onCC():void 
 
\t \t \t { 
 
\t \t \t \t var obj1:Object = new Object(); 
 
\t \t \t \t obj1.col1 = "col11"; 
 
\t \t \t \t obj1.col2 = "col12"; 
 
\t \t \t \t obj1.col3 = "col13"; 
 
\t \t \t \t dp.addItem(obj1); 
 
\t \t \t \t 
 
\t \t \t \t obj1 = new Object() 
 
\t \t \t \t obj1.col1 = "col21"; 
 
\t \t \t \t obj1.col2 = "col22"; 
 
\t \t \t \t obj1.col3 = "col23"; 
 
\t \t \t \t dp.addItem(obj1); 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t var popup:PopupPanel = new PopupPanel(); 
 
\t \t \t private function launchPopup():void 
 
\t \t \t { 
 
\t \t \t \t 
 
\t \t \t \t PopUpManager.addPopUp(popup, this as DisplayObject); 
 
\t \t \t \t PopUpManager.centerPopUp(popup); 
 
\t \t \t } 
 
\t \t ]]> 
 
\t </fx:Script> 
 
\t <fx:Declarations> 
 
\t \t <!-- Place non-visual elements (e.g., services, value objects) here --> 
 
\t \t 
 
\t </fx:Declarations> 
 
\t 
 
\t <mx:AdvancedDataGrid sortableColumns="false" sortItemRenderer="{null}" dataProvider="{dp}" draggableColumns="false" > 
 
\t \t <mx:groupedColumns> 
 
\t \t \t <mx:AdvancedDataGridColumn headerText="PM1" dataField="col1" /> 
 
\t \t \t <mx:AdvancedDataGridColumnGroup headerText="PM2" > 
 
\t \t \t \t <mx:AdvancedDataGridColumn headerText="NE" dataField="col2" /> 
 
\t \t \t \t <mx:AdvancedDataGridColumn headerText="FE" dataField="col3"/> 
 
\t \t \t </mx:AdvancedDataGridColumnGroup> 
 
\t \t </mx:groupedColumns> 
 
\t </mx:AdvancedDataGrid> 
 
\t <mx:Button label="launch popup" click="launchPopup()" /> 
 
</s:WindowedApplication>

<?xml version="1.0" encoding="utf-8"?> 
 
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
 
\t \t \t xmlns:s="library://ns.adobe.com/flex/spark" 
 
\t \t \t xmlns:mx="library://ns.adobe.com/flex/mx" width="1000" height="750" 
 
\t \t \t close="titlewindow1_closeHandler(event)"> 
 
\t <s:layout> 
 
\t \t <s:HorizontalLayout paddingLeft="20" paddingRight="20" paddingTop="20" paddingBottom="20"/> 
 
\t </s:layout> 
 
\t <fx:Script> 
 
\t \t <![CDATA[ 
 
\t \t \t import mx.collections.ArrayCollection; 
 
\t \t \t import mx.events.CloseEvent; 
 
\t \t \t import mx.managers.PopUpManager; 
 
\t \t \t 
 
\t \t \t [Bindable] private var dp:ArrayCollection = new ArrayCollection(); 
 
\t \t \t protected function titlewindow1_closeHandler(event:CloseEvent):void 
 
\t \t \t { 
 
\t \t \t \t // TODO Auto-generated method stub 
 
\t \t \t \t PopUpManager.removePopUp(this); 
 
\t \t \t } 
 
\t \t \t 
 
\t \t ]]> 
 
\t </fx:Script> 
 
\t <fx:Declarations> 
 
\t \t <!-- Place non-visual elements (e.g., services, value objects) here --> 
 
\t </fx:Declarations> 
 
\t 
 
\t 
 
\t <mx:AdvancedDataGrid id="dg1" sortableColumns="false" sortItemRenderer="{null}" dataProvider="{dp}" draggableColumns="false" width="100%" height="100%"> 
 
\t \t <mx:groupedColumns> 
 
\t \t \t <mx:AdvancedDataGridColumn headerText="PM1" dataField="col1" /> 
 
\t \t \t <mx:AdvancedDataGridColumnGroup headerText="PM2" > 
 
\t \t \t \t <mx:AdvancedDataGridColumn headerText="NE" dataField="col2" /> 
 
\t \t \t \t <mx:AdvancedDataGridColumn headerText="FE" dataField="col3"/> 
 
\t \t \t </mx:AdvancedDataGridColumnGroup> 
 
\t \t </mx:groupedColumns> 
 
\t </mx:AdvancedDataGrid> 
 
\t 
 
\t <mx:AdvancedDataGrid id="dg2" sortableColumns="false" sortItemRenderer="{null}" dataProvider="{dp}" draggableColumns="false" width="100%" height="100%"> 
 
\t \t <mx:groupedColumns> 
 
\t \t \t <mx:AdvancedDataGridColumn headerText="PM1" dataField="col1" /> 
 
\t \t \t <mx:AdvancedDataGridColumnGroup headerText="PM2" > 
 
\t \t \t \t <mx:AdvancedDataGridColumn headerText="NE" dataField="col2" /> 
 
\t \t \t \t <mx:AdvancedDataGridColumn headerText="FE" dataField="col3"/> 
 
\t \t \t </mx:AdvancedDataGridColumnGroup> 
 
\t \t </mx:groupedColumns> 
 
\t </mx:AdvancedDataGrid> 
 
</s:TitleWindow>

回答

1

我创建一个公共方法的实例非空通话电网invalidateList()。示例:

// Update grids when the display is already instantiated 
public function updates():void{ 
    its grid.invalidateList(); 
}