gloves fox flexair chile flex air

fox - flex outlet



Actualizar DataGrid cuando se actualiza DataProvider (4)

¿Hiciste la variable XML Bindable ?:

[Bindable] private var data:XML...

Estoy trabajando en una aplicación que usa Flex, Adobe Air. Tengo un DataGrid con un XML como mi DataProvider. Durante la ejecución del programa mi XML se actualiza. Después de que se actualice y se guarde XML, mi DataGrid también debería recibir una actualización. He usado el método Dataprovidername.refresh() pero no está funcionando.


He resuelto mi problema de actualización de la cuadrícula de datos cuando el proveedor de datos XML ha cambiado ....

en lugar de guardar el documento XML y cargarlo en el proveedor de datos de la cuadrícula de datos, asigné el Documento XML actualizado al proveedor de datos como un nuevo proveedor. De esta forma, se puede resolver el problema refrescante con el enlace.


Para aquellos de ustedes interesados ​​en el funcionamiento interno. MX Halo DataGrid y AdvanceDataGrids se actualizarán cuando detecten modificaciones en el proveedor de datos. Esto debería ser automático. Esto por supuesto solo funcionará si marca el proveedor de datos como vinculable y modifica la variable que es el mismo proveedor de datos. Siempre es una buena idea tener su proveedor de datos como ICollectionView.

Por ejemplo, si especifica una "Matriz" o "XML" como un proveedor de datos para una cuadrícula de datos, la cuadrícula de datos creará internamente un nuevo ArrayCollection o XmlListCollection y lo usará como un proveedor de datos. En este caso, agregar / eliminar a la matriz fuente no va a tener ningún impacto.

Además, en caso de que necesite "volver a dibujar" la cuadrícula de datos, necesita llamar a invalidateList () en su lugar. Mucha gente piensa que "invalidateDisplayList ()" debería hacerlo, pero no es así. Esto se aplica a todos los controles basados ​​en listas (unos que heredan de ListBase).


después de actualizar los datos, intente enviar un evento de cambio de colección manualmente:

datagrid.dataProvider.dispatchEvent( new CollectionEvent(CollectionEvent.COLLECTION_CHANGE));