Hi Piotr, I am not sure what you mea or where I am to out the listener. In the code above there is a listener in the extended DataGrid: initComplete="onInitComplete(event)"
On Thu, 25 Mar 2021 at 12:06, Piotr Zarzycki <[email protected]> wrote: > Hi David, > > Did you try add event listener initComplete to DataGrid itself initially ? > > Thanks, > Piotr > > czw., 25 mar 2021 o 11:38 David Slotemaker de Bruine < > [email protected]> napisał(a): > >> Hi, >> >> I am trying to set columns in a Datagrid depending on the size of the >> screen. >> >> I have extended the DataGrid Component and added Array Variables that >> contain the columns that should be visible at each screen size. I have >> added a <j:ResponsiveResizeListener localId="resizer"/> to the component. >> On initCompleteEvent I setup the listeners for the ResponsiveSize Events. >> These all fire correctly and the colums are changed dynamically when the >> browser size is changed. The exception is the first time the page is loaded >> as no "resize" event fires. >> >> I have tried manually calling the handler duing the InitCompleteEvent but >> the Array variables that contain the list of columns are empty at this >> point. Is there another event that I can listen for? >> >> The datagrid code is: >> >> <?xml version="1.0" encoding="utf-8"?> >> <j:DataGrid xmlns:fx="http://ns.adobe.com/mxml/2009" >> xmlns:js="library://ns.apache.org/royale/basic" >> xmlns:j="library://ns.apache.org/royale/jewel" >> initComplete="onInitComplete(event)" >> > >> <j:beads> >> <j:ResponsiveResizeListener localId="resizer"/> >> <!--<js:ViewDataBinding/>--> >> </j:beads> >> <fx:Script> >> <![CDATA[ >> import org.apache.royale.collections.ArrayList; >> import >> org.apache.royale.jewel.supportClasses.ResponsiveSizes; >> >> public var columnsPhone:Array = new Array(); >> public var columnsTablet:Array = new Array(); >> public var columnsDesktop:Array = new Array(); >> public var columnsWideScreen:Array = new Array(); >> public var columnsFull:Array = new Array(); >> >> protected function onInitComplete(event:Event):void{ >> setResponsiveSizeIndicatorListeners(); >> handleResponsiveSizeChange(null); >> } >> >> private function setColumns(newColumns:Array):void >> { >> if(newColumns.length != 0) >> { >> this.columns = newColumns; >> } >> } >> >> private function >> setResponsiveSizeIndicatorListeners():void >> { >> this.addEventListener('phoneResponsiveSize', >> handleResponsiveSizeChange); >> this.addEventListener('tabletResponsiveSize', >> handleResponsiveSizeChange); >> this.addEventListener('desktopResponsiveSize', >> handleResponsiveSizeChange); >> this.addEventListener('widescreenResponsiveSize', >> handleResponsiveSizeChange); >> this.addEventListener('fullResponsiveSize', >> handleResponsiveSizeChange); >> } >> >> private function handleResponsiveSizeChange(event:Event = >> null):void >> { >> if(resizer.currentResponsiveSize == ResponsiveSizes.PHONE) { >> setColumns(columnsPhone); >> } >> else if(resizer.currentResponsiveSize == >> ResponsiveSizes.TABLET) { >> setColumns(columnsTablet); >> } >> else if(resizer.currentResponsiveSize == >> ResponsiveSizes.DESKTOP) { >> setColumns(columnsDesktop); >> } >> else if(resizer.currentResponsiveSize == >> ResponsiveSizes.WIDESCREEN) { >> setColumns(columnsWideScreen); >> } >> else if(resizer.currentResponsiveSize == >> ResponsiveSizes.FULL) { >> setColumns(columnsFull); >> } >> } >> ]]> >> </fx:Script> >> </j:DataGrid> >> >> And I set the mxml this way: >> >> <components:DataGridExtended id="dg" width="100%" height="314" >> dataProvider="{pCSearchResults.pagedData}" >> >> columnsPhone="{[dgcCodigo,dgcNombre,dgcGPS,dgcTelSimple]}" >> columnsTablet="{[dgcCodigo,dgcNombre]}" >> >> columnsDesktop="{[dgcCodigo,dgcNombre,dgcPoblacion]}" >> >> columnsWideScreen="{[dgcCodigo,dgcNombre,dgcPoblacion,dgcGPS,]}" >> >> columnsFull="{[dgcCodigo,dgcNombre,dgcPoblacion,dgcGPS]}" >> > >> <components:columns> >> <j:DataGridColumn localId="dgcCodigo" label="Codigo" >> dataField="notesCliente" /> >> <j:DataGridColumn localId="dgcNombre" label="Nombre" >> dataField="nombreCompleto" /> >> <j:DataGridColumn localId="dgcPoblacion" label="Poblacion" >> dataField="poblacionNombre" /> >> <j:DataGridColumn localId="dgcGPS" label="GPS" >> dataField="direccionLatLong" columnWidth="50" /><j:DataGridColumn >> localId="dgcTelSimple" label="Tlfno" dataField="tlfno" columnWidth="50" /> >> </components:columns> >> </components:DataGridExtended> >> > > > -- > > Piotr Zarzycki > -- *David Slotemaker de Bruïne* *Head of Educational Robotics* Av. Sarriá, 130 - 08017 Barcelona <https://maps.google.com/?q=Av.+Sarri%C3%A1,+130+-+08017+Barcelona&entry=gmail&source=g> T. +34 932 523 729 ext. 135 [email protected]
