2010-03-19 68 views
0

我开发了基于Advance数据网格的应用程序。在这个网格中,每个列都添加了项目渲染的帮助,并且我还在所有列标题中添加了复选框。在网格中,我使用了xml数据提供程序。我将xml创建为字符串,并将此字符串转换为xml。 当我点击任何细胞需要10-13秒,并在单元格单击处理程序我得到System.totalMemory的价值是255205376.我的应用程序运行速度很慢

请任何人建议我,我会做什么。

感谢

我的XML代码装箱

public function CreateDefaultXml(PojectionPeriod:int):XML{ 
      var xmlstring:String="<root>"; 

      xmlstring+="<row>" + 
        "<Itemname>Item</Itemname>" + 
        "<Unit>Unit</Unit>" + 
        "<Cases>Cases</Cases>" + 
        "<row>1</row>" ; 

       for(var i:int=0;i<PojectionPeriod;i++){ 
        xmlstring+="<projection_"+i.toString()+">"; 
        xmlstring+="<projectionTxt/>"; 
        xmlstring+="<growthValue/>"; 
        xmlstring+="<projectionFormula/>"; 
        xmlstring+="<constantgrowth/>"; 
        xmlstring+="<growthWith/>"; 
        xmlstring+="<timeProjection/>"; 
        xmlstring+="<formula/>"; 
        xmlstring+="<IsError/>"; 
        xmlstring+="<Image>l</Image>"; 
        xmlstring+="<DisplayprojectionTxt/>"; 
        xmlstring+="<Style>" + 
            "<FontColor></FontColor>"+ 
            "<CellFill>0xffffff</CellFill>"+ 
           "</Style>"; 
        xmlstring+="<DecimalValue>0</DecimalValue>"; 
        xmlstring+="</projection_"+i.toString()+">"; 
       } 
       xmlstring+="<RowSelected>false</RowSelected>"; 
       xmlstring+="<ItemNameStyle>" + 
         "<FontColor></FontColor>"+ 
         "<CellFill></CellFill>" + 
        "</ItemNameStyle>" + 
        "<UnitStyle>" + 
         "<FontColor></FontColor>"+ 
         "<CellFill></CellFill>" + 
        "</UnitStyle>" 
        "<CasesStyle>" + 
         "<FontColor></FontColor>"+ 
         "<CellFill></CellFill>" + 
        "</CasesStyle>" ; 
       xmlstring+="</row>"; 

      var headerxmlString:String=""; 
      headerxmlString+="<header>" + 
         "<Setting>" + 
          "<Currency></Currency>" + 
          "<Period></Period>" + 
          "<NumberOfPeriod></NumberOfPeriod>" + 
          "<StartPeriod></StartPeriod>" + 
          "<PeriodFormat>" + 
           "<Sequence></Sequence>" + 
           "<Month></Month>" + 
           "<Year></Year>" + 
           "<Separators></Separators>" + 
           "<FontColor></FontColor>"+ 
           "<CellFill>0xffffff</CellFill>"+ 
          "</PeriodFormat>" + 
          "<NumberFormat>" + 
           "<Seperator></Seperator>" + 
           "<Negative></Negative>" + 
           "<HardCoded>" + 
            "<FontColor>0x000000</FontColor>"+ 
            "<CellFill>0xffffff</CellFill>"+ 
           "</HardCoded>" + 
           "<Calculated>" + 
            "<FontColor>0x000099</FontColor>"+ 
            "<CellFill>0xfffe83</CellFill>"+ 
           "</Calculated>" + 
           "<DecimalDigit>2</DecimalDigit>" + 
          "</NumberFormat>" + 
         "</Setting>"+ 
         "<projectname/>"; 

      headerxmlString+="<headerColumn>"; 
      var headerArr:Array=new Array(); 
      for(var j:int=0;j<int(GlobalVariables.GlobalVariables.ProjectionPeriod)+3;j++){ 
       headerxmlString+="<column_"+i+">" 
        headerxmlString+=false 
       headerxmlString+="</column_"+i+">"     
      } 
      headerxmlString+="</headerColumn>" 
      headerxmlString+="</header>"; 
      GlobalVariables.GlobalVariables.HeaderXMLs=XML(headerxmlString); 
      xmlstring+=headerxmlString;   
      xmlstring+="</root>"; 
      return XML(xmlstring); 
     } 
+0

你能发布一些你的代码吗?它可以帮助我们了解您如何创建XML。 – 2010-03-19 20:38:04

回答

0

很难说在什么地方你的问题是不看你的代码;但第一步是使用Flex构建器中的分析工具来更好地了解内存分配的位置以及所有时间使用的方法。

您的XML集合中有多少个“元素”?

0

如果您将dataSource属性设置为您的CreateDefaultXML函数,则Flex会在每次排序数据,单击单元格或调整应用程序窗口大小时调用该函数。几乎任何影响AdvancedDataGrid或其内容的事件都会导致该函数再次被调用。

在组件creationComplete事件处理程序中调用CreateDefaultXML函数并将该值输出到Bindable变量可能会更好。然后让你的AdvancedDataGrid使用Bindable变量作为你的数据源,这样你就不会一遍又一遍地重新创建它。 (假设你的dataSource设置为CreateDefualtXML()当然)。

相关问题