Comunidad de diseño web y desarrollo en internet online

Reordenar columnas datagrid

Citar            
MensajeEscrito el 16 Sep 2010 11:38 am
wenas, tengo un datagrid en el que cargo unos horarios desde un xml y necesitaria q las columnas estubieran ordenadas en un orden u otro dependiendo de si la linea es en orden ascendente o descendiente, si fuera ascendente al pulsar el filtro seria asi.



y si la linea fuera descendente el orden de las columnas seria asi.



Me gustaria saber si esto es posible. Pongo tambien el codigo del datagrid.

Código Flex :

<mx:DataGrid id="m_dtgTimes" styleName="horarios" left="10" top="120" right="10" alpha="0" selectable="false" height="390" verticalScrollPolicy="off">
        <mx:columns>
                <mx:DataGridColumn dataField="dayrange" headerText="RANGO DIAS" width="100" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.dayrange}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop0" headerText="{ xmlStops.lastResult[0].stops.item[0].name }" width="70" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop0}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop1" headerText="{ xmlStops.lastResult[0].stops.item[1].name }" width="120" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop1}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop2" headerText="{ xmlStops.lastResult[0].stops.item[2].name }" width="60" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop2}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop3" headerText="{ xmlStops.lastResult[0].stops.item[3].name }" width="140" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop3}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop4" headerText="{ xmlStops.lastResult[0].stops.item[4].name }" width="75" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop4}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop5" headerText="{ xmlStops.lastResult[0].stops.item[5].name }" width="105" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop5}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop6" headerText="{ xmlStops.lastResult[0].stops.item[6].name }" width="80" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop6}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop7" headerText="{ xmlStops.lastResult[0].stops.item[7].name }" width="100" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop7}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop8" headerText="{ xmlStops.lastResult[0].stops.item[8].name }" width="90" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop8}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn  dataField="stop9" headerText="{ xmlStops.lastResult[0].stops.item[9].name }" width="70" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Label text="{data.stop9}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
    </mx:DataGrid>


Bueno, espero vuestra respuesta y un saludo. Gracias de forma anticipada.

Por avielo

21 de clabLevel



Genero:Masculino  

Cordoba, España

firefox
Citar            
MensajeEscrito el 16 Sep 2010 02:41 pm
A menos que hayas especificado que no lo haga, al darle al header de la columna los ordena ... ¿probaste?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Sep 2010 03:13 pm
no eso lo que quiero, el orden al que me refiero es q la columna numero 11 este en el lugar numero 2, la 10 en el lugar numero 3, y asi susesivamente, y esto lo tengo que hacer cuando pulse el un boton de buscar, si la linea es descendente y si no ponerlos de forma normal. Espero haberme explicado mejor.

Por avielo

21 de clabLevel



Genero:Masculino  

Cordoba, España

firefox
Citar            
MensajeEscrito el 16 Sep 2010 03:30 pm
Entonces en vez de dibujarla estática, crearía un dataProvider, es decir un ArrayCollection y lo manipularía en las búsquedas para que al reasignarlo se redibuje el datagrid

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Sep 2010 09:32 am
No se a lo q te refieres exactamente, los header text del datagrid los tengo asignado por un arraycollection q se genera tras la lectura de un xml, pero si reoordeno el arraycollection, no me refresca los header del data grid.

Por avielo

21 de clabLevel



Genero:Masculino  

Cordoba, España

firefox
Citar            
MensajeEscrito el 17 Sep 2010 11:40 am
Eso es porque lo tienes estáticamente declarado en el MXML y usas label como itemrenderer cuando posiblemente con contenido estandard sea suficiente. Los headers los tienes atados al XML que cargas, ejemplo:

xmlStops.lastResult[0].stops.item[6].name

Entonces para poner en práctica un datagrid que pueda ser altamente dinámico:

- No tienes que usar directamente el XML, sino crear un ArrayCollection que tenga una colección de objetos con todas las propiedades que necesitas. Esto lo haces recorriendo el XML que has cargado
- Al arrayCollection lo asignas directamente como dataProvider de tu datagrid, esto permitirá que se generen automáticamente las columnas en vez de estar hardcodeades en el MXML
- El arrayCollection contiene un array de objetos por cada columna, este es el array que tienes que mover de posición
- Para el reordenamiento, puedes copiar de un ArrayCollection a otro, cuando reasignes el dataProvider se regenera el dataGrid

Otra opción es que agregues datagridColumn de a una, pero se me hace que tienes que usar bastante mas código y es un pelín mas complicado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.