I ae Daniel... É mais ou menos isso... É um sisteminha de controle de horas trabalhadas...
O usuário entra, seleciona o mês e o ano e eu leio um xml trazendo os dados se já existirem, ou caso não existam eu apenas preencho o dataGrid com os dias do mês selecionado. Aí o cara preenche as horas trabalhadas conforme o dia. O que eu quero é percorrer esse grid, recuperar os dados e gerar um xml. Já consigo gerar o xml, o que tô penando mesmo é em percorrer o grid pra recuperar os dados. On Nov 21, 2007 7:40 AM, Daniel Schmitz <[EMAIL PROTECTED]> wrote: > > 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 >> > > > -- Att, Thiago R. Fernandes --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---