Olá,

eu acho q o rowcount mostra menos porque mostra somente as linhas que
estão visiveis na grid.

Você tentou criar um dataProvider (array) vazio e depois verificar se
a medida que o usuário digita informações no grid você as obtém
através do dataProvider ?

Abs,
 Daniel Schmitz


On 21 nov, 07:29, Tião da Obra <[EMAIL PROTECTED]> wrote:
> Precisava exportar os dados de um Datagrid para o excel, daí no google 
> apareceu esta opção:http://mannu.livejournal.com/348299.html
>
> Uma das modificações necessárias foi os números, já que eu precisava 
> arredondálos antes de mandar pro clipboard então modifiquei um dos métodos da 
> classe de exemplo.
>
> Não sei se ajuda mas vê se algum destes métodos te dá alguma idéia, uma luz. 
> :D
>
> Bons códigos,
> -Daniel
>
> ================================ CODIGO ORIGINAL 
> ==================================================
> <?xml version="1.0"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";>
>   <mx:Script>
>     <![CDATA[
>     import flash.events.KeyboardEvent;
>
>     private function dataGridKeyDownHandler(event:KeyboardEvent):void
>     {
>       if (event.ctrlKey && !dataGrid.getChildByName("clipboardProxy"))
>       {
>         // Add an invisible TextField object to the DataGrid
>
>         var textField:TextField = new TextField();
>         textField.name = "clipboardProxy";
>         dataGrid.addChild(textField);
>         textField.visible = false;
>
>         textField.type = TextFieldType.INPUT;
>         textField.multiline = true;
>
>         // Populate the TextField with selected data in TSV format
>
>         textField.text = getTextFromItems(dataGrid.selectedItems);
>         textField.setSelection(0, textField.text.length - 1);
>
>         // Listen for textInput event
>
>         textField.addEventListener(TextEvent.TEXT_INPUT,
>             clipboardProxyPasteHandler);
>
>         // Set player-level focus to the TextField
>
>         systemManager.stage.focus = textField;
>       }
>     }
>
>     private function dataGridKeyUpHandler(event:KeyboardEvent):void
>     {
>       if (!event.ctrlKey)
>       {
>         var textField:TextField = TextField(dataGrid
>             .getChildByName("clipboardProxy"));
>         if (textField)
>           dataGrid.removeChild(textField);
>       }
>     }
>
>     private function clipboardProxyPasteHandler(event:TextEvent):void
>     {
>       // Extract values from TSV format and populate the DataGrid
>
>       var items:Array = getItemsFromText(event.text);
>       for each (var item:Object in items)
>         dataGrid.dataProvider.addItem(item);
>     }
>
>     private function getItemsFromText(text:String):Array
>     {
>       var rows:Array = text.split("\n");
>       if (!rows[rows.length - 1])
>         rows.pop();
>
>       var columns:Array = dataGrid.columns;
>       var itemsFromText:Array = [];
>
>       for each (var rw:String in rows)
>       {
>         var fields:Array = rw.split("\t");
>
>         var n:int = Math.min(columns.length, fields.length);
>         var item:Object = {};
>         for (var i:int = 0; i < n; i++)
>           item[columns[i].dataField] = fields[i];
>
>         itemsFromText.push(item);
>       }
>
>       return itemsFromText;
>     }
>
>     private function getTextFromItems(items:Array):String
>     {
>       var columns:Array = dataGrid.columns;
>       var textFromItems:String = "";
>
>       for each (var it:Object in items)
>       {
>         for each (var c:DataGridColumn in columns)
>           textFromItems += it[c.dataField] + "\t";
>         textFromItems += "\n";
>       }
>
>       return textFromItems;
>     }
>     ]]>
>   </mx:Script>
>
>   <mx:DataGrid id="dataGrid" editable="true"
>     keyDown="dataGridKeyDownHandler(event)"
>     keyUp="dataGridKeyUpHandler(event)">
>     <mx:columns>
>       <mx:DataGridColumn headerText="Scheduled Date"
>         dataField="scheduledDate" />
>       <mx:DataGridColumn headerText="Home Team"
>         dataField="homeTeam" />
>       <mx:DataGridColumn headerText="Away Team"
>         dataField="awayTeam" />
>       <mx:DataGridColumn headerText="Field"
>         dataField="field" />
>     </mx:columns>
>     <mx:dataProvider>
>       <mx:Object scheduledDate="4/1/2006" homeTeam="Chester Bucks"
>         awayTeam="Long Valley Hitters" field="Dawn Field" />
>     </mx:dataProvider>
>   </mx:DataGrid>
>
> </mx:Application>
>
> ================================ CODIGO EDITADO 
> ==================================================
>
> package classes
> {
>  import flash.events.KeyboardEvent;
>  import mx.controls.DataGrid;
>  import flash.events.TextEvent;
>  import flash.text.TextField;
>  import flash.text.TextFieldType;
>  import mx.controls.dataGridClasses.DataGridColumn;
>  import flash.system.System;
>  import mx.utils.ObjectProxy;
>
>  public class DataGridCopyLine
>  {
>   private var dataGrid:DataGrid;
>   private var formatador:FormatadorNumerico = new FormatadorNumerico();
>
>   public function DataGridCopyLine(dataGrid:Object) {
>    super();
>    this.dataGrid = dataGrid as DataGrid;
>   }
>
>   public function dataGridKeyDownHandler(event:KeyboardEvent):void
>   {
>    if (event.ctrlKey && !dataGrid.getChildByName("clipboardProxy"))
>       {
>        // Add an invisible TextField object to the DataGrid
>
>           var textField:TextField = new TextField();
>           textField.name = "clipboardProxy";
>           dataGrid.addChild(textField);
>           textField.visible = false;
>
>           textField.type = TextFieldType.INPUT;
>           textField.multiline = true;
>
>           // Populate the TextField with selected data in TSV format
>
>           textField.text = getTextFromItems(dataGrid.selectedItems);
>           textField.setSelection(0, textField.text.length - 1);
>
>           // Listen for textInput event
>
>           textField.addEventListener(TextEvent.TEXT_INPUT,
>               clipboardProxyPasteHandler);
>
>           // Set player-level focus to the TextField
>
>           //systemManager.stage.focus = textField;
>
>           dataGrid.stage.focus = textField;
>
>         }
>   }
>
>   public function dataGridKeyUpHandler(event:KeyboardEvent):void
>   {
>    if (!event.ctrlKey)
>       {
>        var textField:TextField = 
> TextField(dataGrid.getChildByName("clipboardProxy"));
>           if (textField) {
>             dataGrid.removeChild(textField);
>           }
>       }
>   }
>
>   private function clipboardProxyPasteHandler(event:TextEvent):void
>   {
>         // Extract values from TSV format and populate the DataGrid
>
>    var items:Array = getItemsFromText(event.text);
>       for each (var item:Object in items)
>           dataGrid.dataProvider.addItem(item);
>   }
>
>   private function getItemsFromText(text:String):Array
>   {
>    var rows:Array = text.split("\n");
>       if (!rows[rows.length - 1])
>           rows.pop();
>
>       var columns:Array = dataGrid.columns;
>       var itemsFromText:Array = [];
>
>       for each (var rw:String in rows)
>       {
>        var fields:Array = rw.split("\t");
>
>           var n:int = Math.min(columns.length, fields.length);
>           var item:Object = {};
>
>           for (var i:int = 0; i < n; i++)
>             item[columns[i].dataField] = fields[i];
>
>           itemsFromText.push(item);
>       }
>
>       return itemsFromText;
>   }
>
>   private function getTextFromItems(items:Array):String
>   {
>    var columns:Array = dataGrid.columns;
>       var textFromItems:String = "";
>
>       for (var i:int = 1; i <= items.length; i++ )
>       {
>        var it:Object = items[items.length-i] as Object;
>        for each (var c:DataGridColumn in columns) {
>         var item:Object = it[c.dataField];
>
>            if ( item is Number ) {
>               textFromItems += formatador.format(item) + "\t";  //Esta classe 
> é um NumberFormatter
>              } else {
>               var texto:String = String(item);
>
>               if ( texto != "null" ) {
>                textFromItems += item + "\t";
>               } else {
>                textFromItems += "\t";
>               }
>
>              }
>        }
>
>           textFromItems += "\n";
>       }
>
>       return textFromItems;
>   }
>  }
>
> }
>
> ========================================= TABELA DE EXEMPLO 
> ===================================
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml";
>  width="100%" height="100%"
>  allowMultipleSelection="true"
>     keyDown="dataGridCopyLine.dataGridKeyDownHandler(event)"
>     keyUp="dataGridCopyLine.dataGridKeyUpHandler(event)">
>  <mx:NumberFormatter id="nf" decimalSeparatorFrom="," decimalSeparatorTo="." 
> thousandsSeparatorFrom="." thousandsSeparatorTo=","/>
>  <mx:Script>
>   <![CDATA[
>    import classes.DataGridCopyLine;
>    import mx.utils.ObjectProxy;
>    import classes.FormatadorNumerico;
>    import mx.formatters.NumberFormatter;
>    import classes.GrupoPotencialSimples;
>    import flash.events.KeyboardEvent;
>
>    private var formatador:FormatadorNumerico = new FormatadorNumerico();
>    private var dataGridCopyLine:DataGridCopyLine = new DataGridCopyLine(this);
>
>    private function sortCompare(grupo1:GrupoPotencialSimples, 
> grupo2:GrupoPotencialSimples) : Number {
>     var perc1:Number = Number(nf.format(grupo1.percentual));
>     var perc2:Number = Number(nf.format(grupo2.percentual));
>     if( perc1 < perc2 ) return -1;
>      else if( perc1 > perc2 ) return 1;
>     else return 0;
>    }
>
>    private function labelNumero(item:Object, column:DataGridColumn):String {
>        var numero:Number = Number(item[column.dataField]);
>        return formatador.format(numero);
>       }
>
>   ]]>
>  </mx:Script>
>
>  <mx:columns>
>   <mx:DataGridColumn id="colLocal" headerText="Local" dataField="nome" 
> fontWeight="bold"/>
>   <mx:DataGridColumn id="colCob" headerText="Atuação" width="60" 
> dataField="cobertura" fontWeight="bold"/>
>   <mx:DataGridColumn id="colTotalReal" headerText="Real" 
> dataField="totalReal" textAlign="right" sortCompareFunction="sortCompare" 
> labelFunction="labelNumero"/>
>   <mx:DataGridColumn id="colTotalDolar" headerText="Dolar" 
> dataField="totalDolar" textAlign="right" sortCompareFunction="sortCompare" 
> labelFunction="labelNumero"/>
>   <mx:DataGridColumn id="colPercentual" headerText="( % )" 
> dataField="percentual" width="45" textAlign="right" 
> sortCompareFunction="sortCompare" labelFunction="labelNumero"/>
>  </mx:columns>
> </mx:DataGrid>
>
>   ----- Original Message -----
>   From: Thiago Rodrigues Fernandes
>   To: Grupo Flex-Brasil ; FlexDev
>
> ...
>
> mais >>
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a