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 -~----------~----~----~----~------~----~------~--~---