{"id":119,"date":"2010-11-30T13:33:57","date_gmt":"2010-11-30T12:33:57","guid":{"rendered":"http:\/\/www.capri-soft.de\/blog\/?p=119"},"modified":"2011-01-12T12:48:05","modified_gmt":"2011-01-12T11:48:05","slug":"baum-von-mxadvanceddatagrid-in-die-zwischenablage-kopieren","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=119","title":{"rendered":"Baum von mx:AdvancedDataGrid in die Zwischenablage kopieren"},"content":{"rendered":"<h1>Aufgabe<\/h1>\n<p>Der Baum eine mx:AdvancedDataGrid mit mx:SummaryRows soll in die Zwischenablage kopiert werden.<\/p>\n<h1>Problem<\/h1>\n<p>Der DataProvider des mx:AdvancedDataGrid ist eigentlich flach. Der erzeugte Baum\/die Hierarchie soll in die Zwischenablage kopiert werden, so dass er in Excel per Copy&#038;Paste mit Einr\u00fcckungen und Summen eingef\u00fcgt werden kann. <\/p>\n<h1>L\u00f6sung<\/h1>\n<p>Eine rekursive Funktion wird erstellt, die \u00fcber den erzeugten Baum iteriert:<\/p>\n<pre class=\"brush: as3; title: ; notranslate\" title=\"\">\r\n\/\/ F\u00fcr das Einr\u00fccken in die Zwischenablage\r\npublic var anzahlGroupingFelder:Number=0; \/\/ Gesamttiefe der Felder\r\npublic var aktuelleTiefe:Number=0;\t\t  \/\/ Tiefe der aktuellen Rekursion\r\npublic var rekursionsString:String=&#039;&#039;;\r\npublic var farbenFuerLevel:Object = new Object();\r\nprivate function getCompleteADGRekursion(treeData:ArrayCollection):void\r\n{\r\n\tvar aktuelleGruppeFelder:String=&#039;&#039;;\r\n\t\t\r\n\tfor (var i:Number=0; i&lt;treeData.length; i++)\r\n\t{\r\n\t\tif(i==0) aktuelleTiefe++;\r\n\t\tvar tabs:String=&#039;&#039;;\r\n\t\tvar behindtabs:String=&#039;&#039;;\r\n\t\t\r\n\t\tfor (var l:Number=0; l&lt;=anzahlGroupingFelder-aktuelleTiefe+3; l++) \r\n\t\t{\r\n\t\t\tbehindtabs+=&#039;&lt;td&gt;&lt;\/td&gt;&#039;;\t\t\t\t\t\t\r\n\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\tvar item:Object=treeData&#x5B;i];\r\n\t\tif(item.children)\r\n\t\t{\r\n\t\t\tfor (var j:Number=1; j&lt;aktuelleTiefe; j++)\r\n\t\t\t{\r\n\t\t\t\ttabs+=&#039;&lt;td&gt;&lt;\/td&gt;&#039;;\t\t\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\tvar properties:String=&#039;&lt;td&gt;&lt;i&gt;&lt;b&gt;&#039;+item.actuallastyear+\r\n\t\t\t&#039;&lt;\/b&gt;&lt;\/i&gt;&lt;\/td&gt;&lt;td&gt;&lt;i&gt;&lt;b&gt;&#039;+item.actualyeartillaugust+\r\n\t\t\t&#039;&lt;\/b&gt;&lt;\/i&gt;&lt;\/td&gt;&lt;td&gt;&lt;i&gt;&lt;b&gt;&#039;+item.actualyearlinearprojection+\r\n\t\t\t&#039;&lt;\/b&gt;&lt;\/i&gt;&lt;\/td&gt;&lt;td&gt;&lt;i&gt;&lt;b&gt;&#039;+item.nextyear+\r\n\t\t\t&#039;&lt;\/b&gt;&lt;\/i&gt;&lt;\/td&gt;&lt;td&gt;&lt;i&gt;&lt;b&gt;&#039;+item.nnextyear+\r\n\t\t\t&#039;&lt;\/i&gt;&lt;\/td&gt;&lt;td&gt;&lt;i&gt;&lt;b&gt;&#039;+item.nnnextyear+\r\n\t\t\t&#039;&lt;\/b&gt;&lt;\/i&gt;&lt;\/td&gt;&lt;td&gt;&lt;i&gt;&lt;b&gt;&#039;+item.nnnnextyear+\r\n\t\t\t&#039;&lt;\/b&gt;&lt;\/i&gt;&lt;\/td&gt;&#039;;\r\n\t\t\t\t\t\t\r\n\t\t\trekursionsString+=&#039;&lt;tr style=&quot;background-color:&#039;+\r\n\t\t\tfarbenFuerLevel&amp;#91;aktuelleTiefe&amp;#93;+&#039;;&quot;&gt;&#039;+tabs+\r\n\t\t\t&#039;&lt;td&gt;&#039;+item.GroupLabel+behindtabs+&#039;&lt;\/td&gt;&#039;+\r\n\t\t\tproperties+&#039;&lt;\/tr&gt;&#039;;\r\n\t\t\tgetCompleteADGRekursion(item.children);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tfor (var k:Number=0; k&lt;anzahlGroupingFelder; k++)\r\n\t\t\t{\r\n\t\t\t\ttabs+=&#039;&lt;td style=&quot;background-color:#EFEFEF&quot;&gt;&lt;\/td&gt;&#039;;\t\t\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\tvar properties2:String=&#039;&lt;td&gt;&#039;+item.productcharacteristic+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.productcharacteristic2+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.productcharacteristic3+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.material+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.actuallastyear+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.actualyeartillaugust+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.actualyearlinearprojection+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.nextyear+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.nnextyear+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.nnnextyear+\r\n\t\t\t&#039;&lt;\/td&gt;&lt;td&gt;&#039;+item.nnnnextyear+&#039;&lt;\/td&gt;&#039;;\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\r\n\t\t\trekursionsString+=&#039;&lt;tr&gt;&#039;+tabs+properties2+&#039;&lt;\/tr&gt;&#039;;\r\n\t\t}\r\n\t\t\t\t\t\r\n\t\t\/\/ Beim ersten gehts eins tiefer\r\n\t\t\t\t\t\r\n\t\t\/\/ Beim letzten eins zur\u00fcck\r\n\t\tif(i==treeData.length-1) aktuelleTiefe--;\r\n\t}\r\n}\r\n<\/pre>\n<p>Aufruf der rekursiven Funktion:<\/p>\n<p>private function copyToClipboard(dg:AdvancedDataGrid):void<br \/>\n{<br \/>\n\t\/\/ Farben je Interationstiefe;<\/p>\n<p>\tfarbenFuerLevel[1]=&#8217;#00B684&#8242;;<br \/>\n\tfarbenFuerLevel[2]=&#8217;#31C39C&#8216;;<br \/>\n\tfarbenFuerLevel[3]=&#8217;#63D3B5&#8242;;<br \/>\n\tfarbenFuerLevel[4]=&#8217;#CEF3E7&#8242;;<br \/>\n\tfarbenFuerLevel[5]=&#8217;#BBBBBB&#8216;;<br \/>\n\tfarbenFuerLevel[6]=&#8217;#AAAAAA&#8216;;<br \/>\n\tfarbenFuerLevel[7]=&#8217;#999999&#8242;;<br \/>\n\tfarbenFuerLevel[8]=&#8217;#888888&#8242;;<\/p>\n<p>\tvar wasIstImDataProviderDebug:Object=dg.dataProvider;<br \/>\n\ttry<br \/>\n\t{<br \/>\n\t\tanzahlGroupingFelder=Number(wasIstImDataProviderDebug.source.<br \/>\n\t\t\t\t\t  grouping.fields.length);<br \/>\n\t}<br \/>\n\tcatch(e:Error)<br \/>\n\t{<br \/>\n\t\tanzahlGroupingFelder=0;<br \/>\n\t}<\/p>\n<p>\tif(anzahlGroupingFelder>0)<br \/>\n\t{<br \/>\n\t\trekursionsString=&#8216;<html><head><title><\/title><\/head><body>&#8218;;<br \/>\n\t\trekursionsString=&#8216;<\/p>\n<table border=\"1\">&#8218;;<br \/>\n\t\trekursionsString=&#8216;<\/p>\n<tr style=\"background-color:#EFEFEF;\" frame=\"box\">&#8218;;<\/p>\n<p>        \t\tfor each (var order:ReportingOrderVO in reportingOrder)<br \/>\n        \t\t{<br \/>\n        \t\t\tif(order.position!=0)<br \/>\n        \t\t\t{<br \/>\n        \t\t\t\trekursionsString+=&#8216;<\/p>\n<td><b>&#8218;+order.description+<br \/>\n        \t\t\t\t                         &#8218;<\/b><\/td>\n<p>&#8218;;<br \/>\n\t\t        \t}<br \/>\n   \t        \t}<\/p>\n<p>   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>Detail 1<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>Detail 2<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>Detail 3<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>Detail 4<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>Actual last year<\/b>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/td>\n<td><b>Actual year&#8216;;<br \/>\n   \t        \trekursionsString+=&#8216; till august<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>Actual year linear projection<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>Next year<\/b><\/td>\n<p>&#8218;,<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>NNext year<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>NNNext year<\/b><\/td>\n<p>&#8218;;<br \/>\n   \t        \trekursionsString+=&#8216;<\/p>\n<td><b>NNNNext year<\/b><\/td>\n<p>&#8218;;<br \/>\n\t\trekursionsString+=&#8216;<\/tr>\n<p>&#8218;;<br \/>\n\t\tgetCompleteADGRekursion(<br \/>\n                             ArrayCollection(dg.hierarchicalCollectionView.source<br \/>\n                                                          .getRoot())<br \/>\n                         );<br \/>\n\t\trekursionsString+=&#8216;<\/table>\n<p><\/body><\/html>&#8218;;<br \/>\n\t\tSystem.setClipboard(rekursionsString);<br \/>\n\t}<br \/>\n\telse<br \/>\n\t{<br \/>\n\t\tvar totalExport:String = new String();<br \/>\n\t\tvar colList:Array = new Array();<br \/>\n\t\tfor(var i:int = 0; i < dg.columnCount; i++)\n\t\t{\n\t\t\tcolList.push(dg.columns[i].dataField);\n\t\t\ttotalExport += String(dg.columns[i].headerText)\n                                                          .replace('\\r',' ') + \"\\t\";\n\t\t}\n\t\ttotalExport += \"\\r\";\n\t\t\t\t\n\t\tfor(var yp:int = 0; yp < reporting.length; yp++)\n\t\t{\n\t\t\tfor(var xp:int = 0; xp < colList.length; xp++)\n\t\t\t{\n\t\t\t\tvar insertString:String=reporting\n                                                   .getItemAt(yp)[colList[xp]];\n\t\t\t\tif(!insertString) insertString='';\n\t\t\t\ttotalExport +=  insertString\n                                                   .replace(\"\\t\",\"\") + \"\\t\"; \n\t\t\t}\n\t\t\ttotalExport += \"\\r\";\n\t\t}\n\t\tSystem.setClipboard(totalExport);\n\t}\n\t\n\t\n\tAlert.show('Data has been copied to clipboard. Now you can paste it to '+\n\t\t  'Microsoft Excel or another application of your choice.');\n}\n[\/actionscript3]\n<\/p>\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.capri-soft.de%2Fblog%2F%3Fp%3D119&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px;margin-top:5px;\"><\/iframe>","protected":false},"excerpt":{"rendered":"<p>Aufgabe Der Baum eine mx:AdvancedDataGrid mit mx:SummaryRows soll in die Zwischenablage kopiert werden. Problem Der DataProvider des mx:AdvancedDataGrid ist eigentlich flach. Der erzeugte Baum\/die Hierarchie soll in die Zwischenablage kopiert werden, so dass er in Excel per Copy&#038;Paste mit Einr\u00fcckungen und Summen eingef\u00fcgt werden kann. L\u00f6sung Eine rekursive Funktion wird erstellt, die \u00fcber den erzeugten &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=119\" class=\"more-link\"><span class=\"screen-reader-text\">Baum von mx:AdvancedDataGrid in die Zwischenablage kopieren<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[5],"tags":[],"class_list":["post-119","post","type-post","status-publish","format-standard","hentry","category-adobe-flex"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-1V","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=119"}],"version-history":[{"count":15,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions\/122"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}