Talvez te ajude, da uma olhadinha aí...
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.events.DataGridEvent; import mx.collections.*; private var MyArray:ArrayCollection; [Bindable] private var sortA:Sort; private var sortByData:SortField; private var sortByValor:SortField; private function headClick(event:DataGridEvent):void { if (event.dataField=="Valor") { MyArray = new ArrayCollection(dados); sortA = new Sort(); if(event.target.columns[event.columnIndex ].sortDescending==false) { // O primeiro parâmetro é o nome do campo. // O segundo parâmetro especifíca uma ordenação por caso-insensitivo. // O terceiro parâmetro especifíca se a ordem é desc ou asc. // O quarto parâmetro especifíca se é ordem numérica. sortByValor = new SortField("Valor", true, true, true); event.target.columns[event.columnIndex ].sortDescending=true; } else { // O primeiro parâmetro é o nome do campo. // O segundo parâmetro especifíca uma ordenação por caso-insensitivo. // O terceiro parâmetro especifíca se a ordem é desc ou asc. // O quarto parâmetro especifíca se é ordem numérica. sortByValor = new SortField("Valor", true, false, true); event.target.columns [event.columnIndex ].sortDescending=false; } sortA.fields=[sortByValor]; sortA.fields[0] = sortByValor; MyArray.sort=sortA; MyArray.refresh(); myGrid.dataProvider=MyArray; myGrid.rowCount=MyArray.length +1; event.preventDefault(); } if (event.dataField=="Data") { MyArray = new ArrayCollection(dados); sortA = new Sort(); if(event.target.columns [event.columnIndex ].sortDescending==false) { // O primeiro parâmetro é o nome do campo. // O segundo parâmetro especifíca uma ordenação por caso-insensitivo. // O terceiro parâmetro especifíca se a ordem é desc ou asc. // O quarto parâmetro especifíca se é ordem numérica. sortByData = new SortField("Data", true, true, true); event.target.columns[event.columnIndex ].sortDescending=true; } else { // O primeiro parâmetro é o nome do campo. // O segundo parâmetro especifíca uma ordenação por caso-insensitivo. // O terceiro parâmetro especifíca se a ordem é desc ou asc. // O quarto parâmetro especifíca se é ordem numérica. sortByData = new SortField("Data", true, false, true); event.target.columns[event.columnIndex ].sortDescending=false; } sortA.fields=[sortByData]; sortA.fields[0] = sortByData; MyArray.sort=sortA; MyArray.refresh(); myGrid.dataProvider=MyArray; myGrid.rowCount=MyArray.length +1; event.preventDefault(); } } public function FormatData(Row:Object, Coluna:DataGridColumn) : String { return _DateFormatter.format(Row.Data); } public function FormataValor(Row:Object, Coluna:DataGridColumn) : String { return _CurrencyFormatter.format( Row.Valor); } ]]> </mx:Script> <mx:DateFormatter id="_DateFormatter" formatString="DD/MM/YYYY" /> <mx:CurrencyFormatter id="_CurrencyFormatter" currencySymbol="R$ " decimalSeparatorTo="," thousandsSeparatorTo=" ." precision="2" /> <mx:Array id="dados"> <mx:Object Data="{new Date(2007, 01, 01)}" Valor="1000" /> <mx:Object Data="{new Date(2006, 01, 01)}" Valor="250" /> <mx:Object Data="{new Date(2006, 05, 02)}" Valor="300" /> <mx:Object Data="{new Date(2005, 06, 10)}" Valor="900" /> <mx:Object Data="{new Date(2007, 04, 02)}" Valor="3000" /> <mx:Object Data="{new Date(2008, 01, 01)}" Valor="1000" /> <mx:Object Data="{new Date(2009, 08, 01)}" Valor="250" /> <mx:Object Data="{new Date(2001, 01, 02)}" Valor="300" /> <mx:Object Data="{new Date(2002, 10, 10)}" Valor="900" /> <mx:Object Data="{new Date(2003, 12, 02)}" Valor="3000" /> </mx:Array> <mx:DataGrid horizontalCenter="0" verticalCenter="0.5" id="myGrid" dataProvider="{dados}" headerRelease="headClick(event);" width="814" height="220"> <mx:columns> <mx:DataGridColumn dataField="Data" headerText="Data" labelFunction="{FormatData}"/> <mx:DataGridColumn dataField="Valor" headerText="Valor" labelFunction="{FormataValor}"/> </mx:columns> </mx:DataGrid> </mx:Application> On 28/06/07, Andrey Wischneski <[EMAIL PROTECTED]> wrote: > > Tem um tópico que eu tive que fazer isso... > > Mas da maneira que fiz ele da um sort na array que contém os dados... > > Da uma procurada que você acha... > > > On 28/06/07, Leandro Rodrigues Chaves <[EMAIL PROTECTED]> wrote: > > > > > > Fala galera, > > > > Estou iniciando no Flex. Desenvolvi um DataGrid que mostra os dados do > > banco usando PHP (com AMFPHP), um componente paginador e sobrescrevi a > > ordenação das colunas, para que fosse possível ordenar considerando > > todos os dados da tabela, e não somente os que estão na tela, como faz > > a ordenação padrão do DataGrid. > > > > Para isso usei o evento headerRelease do DataGrid e escrevi uma função > > para fazer novamente a requisição dos dados trazendo-os ordenados pela > > coluna clicada. Está funcionando bem, mas como eu sobrescrevi a > > ordenação padrão e evitei o Flex de usá-la com > > event.preventsDefault(), a setinha pra cima ou pra baixo não aparece > > mais. > > > > Alguém sabe como posso colocar a setinha ou, se necessário, colocar > > essas imagens de setinhas dentro do cabeçalho da coluna na marra a > > cada ordenação? Por exemplo, se a ordenação escolhida for Ascendente, > > coloca a imagen seta1.gif dentro da célula do cabeçalho, se for > > descendente coloco seta2.gif e se for retirada a ordenação da coluna > > retirar a imagem também. > > > > Alguém pode me ajudar? > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] 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 -~----------~----~----~----~------~----~------~--~---
