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

Responder a