2012-06-14 3 views
0

Je cherche un moyen de prendre un instantané de TOUT le contenu d'un DataGrid pour inclure les données qui dépassent le bas de l'écran (c'est à dire besoin de faire défiler la DG pour voir plus de données).Instantané Datagrid de TOUTES les données

Obtenir un instantané des données en cours d'affichage est assez simple:

ImageSnapshot.defaultEncoder = PNGEncoder; 
var snap:ImageSnapshot = ImageSnapshot.captureImage(myDG); 
var imageBytes:ByteArray = snap.data; 

La seule solution possible, je suis venu avec est de prendre un instantané, vérifiez si la grille de données peut défiler, défiler jusqu'à la position, prendre un autre instantané, et deuxième instantané au premier instantané, répétez jusqu'à ce que datagrid soit à la fin.

Le problème avec cette solution est que chaque nouvel instantané affichera les en-têtes. De plus, le tout dernier instantané contiendra probablement des données de données de l'image précédente.

Est-ce que quelqu'un a d'autres idées sur la façon d'accomplir cela?

+0

quel est votre objectif pour faire l'instantané? Voulez-vous faire quelque chose de similaire à la pagination des données? – michael

+1

Demande d'un utilisateur pour être en mesure d'envoyer par courriel le contenu de la grille de données. Après une petite sieste j'ai une nouvelle pensée ... Pourquoi ne pas l'enregistrer en CSV et l'attacher au mailto au lieu d'un .png ??? Serait beaucoup plus facile. C'est le prochain trou de lapin pour moi de couler. Merci. – Dom

Répondre

1

Je cherche un moyen de prendre un instantané de tous le contenu d'un DataGrid pour inclure les données qui dépasse le bas de l'écran (c.-à-nécessaire de faire défiler la DG vers le bas pour voir plus de données).

Dans une classe de liste basée sur Flex, y compris DataGrid, les données ne dépassent pas le bas de l'écran. Chaque élément de votre fournisseur de données est affiché en utilisant un itemRenderer. itemRenderer ne sera créé que pour le nombre de composants visuels affichés, et non pour chaque élément de votre fournisseur de données. Lorsque vous faites défiler la liste, la propriété data de chaque itemRenderer est modifiée; changeant ainsi l'affichage. Le défilement est vraiment juste un changement simulé dans les données. J'appelle l'ensemble du processus de rendu de recyclage.

Si vous souhaitez créer un instantané d'un DataGrid avec toutes les données affichées, vous devez créer et rendre toutes les données. Dans le DataGrid MX, vous pouvez le faire en ajustant la hauteur de sorte que tous les éléments seraient visibles. Dans la plupart des dispositions spark, il existe une propriété useVirtualLayout qui contrôle cela. Je ne sais pas si elle peut être désactivée dans le Spark DataGrid, cependant.

+0

C'est ce dont j'avais peur. J'ai vérifié et il n'y a pas d'option useVirtualLayout pour le DataGrid. En outre, rétrécir la police pour adapter tout le contenu dans un écran n'est pas une option car il y a tellement de données que lorsque l'image serait agrandie pour l'afficher, la résolution serait terrible. Merci – Dom

Questions connexes