2009-12-23 3 views
2

Dans mon application, j'ai un DataGrid lié à RemoteObject. La grille de données a un formulaire correspondant qui contient les détails. Lorsque l'utilisateur clique sur une ligne dans la grille de données, le formulaire remplit avec les valeurs à partir de l'élément sélectionné de DataGrid.Flex: sélection par programmation de row - selectedItem est null

Je veux sélectionner par programme une ligne dans mon DataGrid lorsque l'application charge .

Pour ce faire, je dois appeler validateNow() et scrollToIndex()

par exemple.

dg.selectedIndex = i; dg.validateNow();
dg.scrollToIndex (i); Je mets ce code dans le gestionnaire Applications creationComplete

Tout cela fonctionne très bien - la ligne désirée est en surbrillance et sélectionnée et l'index selected est i. Le problème est que je ne peux pas accéder aux données pour remplir le formulaire de détails. Lorsque j'essaie de récupérer la propriété dg.SelectedItem - elle est null.

Comment sélectionner par programme une ligne dans la grille sur la charge ET accéder aux données de ligne?

grâce

Répondre

0

l'élément sélectionné de la DataGrid pointant juste l'élément du dataProvider. Si vous savez quel élément vous voulez sélectionner dans votre grille de données, utilisez simplement cet élément dans vos données source pour faire la population initiale de votre formulaire.

+0

Merci pour le copain de réponse.Mais le dataProvider est également null.I ne peut pas faire ceci: datagrid.dataProvider [i] ou quelque chose – Shuo

8

utilisation

dg.invalidateList(); 
dg.callLater(setRows, [1]); 

function selRows(indices:Array):void { 
    dg.selectedIndices = indices; 
    dg.validateNow(); 
    dg.scrollToRow(indices[0]); 
} 

Fondamentalement, si vous changez les données DG et la sélection d'un élément dans le même flux, votre seleciton sera écrasé par des méthodes de ListBase, vous devez définir les sélections après la mise à jour de l'interface graphique actuelle pour laquelle vous besoin d'utiliser callLater methoad.

+0

Gah! validateNow clobberait mon selectedIndex !!! Je vous remercie! – aschyiel

+0

C'est génial! J'ai eu un problème similaire (réinitialisation de la grille de données lors du changement de fournisseur) où je devais stocker les éléments sélectionnés avant que les données ne changent et les mettre à jour lorsque le changement est terminé et cela n'a pas fonctionné jusqu'à ce que j'utilise votre solution callLater. 10x! – Ofir

Questions connexes