2009-11-30 4 views
0

J'utilise un tableau pour alimenter une grille de données Flash 8, assez simple. Je suis aussi en train de trier le tableau par l'un des champs, aussi assez simple.flash 8 datagrid trier la flèche

Je voudrais que la flèche de tri soit présente lors de la première saisie de la grille, mais ce n'est pas le cas !!

L'utilisateur doit cliquer sur une cellule d'en-tête pour que la flèche devienne visible. Est-il possible de contourner ce comportement.

Merci

Répondre

0

Il a été un certain temps depuis que je suis touché AS2. Apparemment, je ne pouvais pas faire fonctionner les choses sans hacks.

Normalement, vous devriez pouvoir sortir avec dg.dispatchEvent ({type: "headerRelease"}), mais non, cela ne semble pas fonctionner. J'ai utilisé l'option Debug> List Objects pour obtenir le nom d'un en-tête de colonne, puis appelé la fonction onRelease(). Apparemment, cela ne fonctionnait que dans un onEnterFrame, que j'ai ensuite supprimé.

Voici mon code, construit avec l'aide de la documentation:

//hacky boolean to check if what we asked for was done 
var selfClicked:Boolean = false; 

myDP = new Array({name:"Chris", price:"Priceless"},{name:"Daisy", price:"Adequate"}, {name:"Nigel", price:"Cheap"}); 
dg.dataProvider = myDP; 

onEnterFrame = function(){ 
    if(!selfClicked){ 
     //ask nicely 
     dg.dispatchEvent({type:"headerRelease"}); 
     //no ? oh well... 
     dg.content_mc.header_mc.hO0.onRelease(); 
     //fix for header label 
     dg.content_mc.header_mc.fHeaderCell0._y = dg.content_mc.header_mc.fHeaderCell1._y; 
     selfClicked = true; 
     delete onEnterFrame; 
    } 
} 

this.headerRelease = function(eventObject){ 
    //nicely hidden debugging gem here, thanks Jen deHaan! 
    trace(mx.data.binding.ObjectDumper.toString(eventObject)); 
} 
dg.addEventListener("headerRelease", this); 

HTH, George

+0

Salut George. Merci beaucoup, c'est génial et force en effet un placement de la flèche sur la grille. Quelques questions si je peux. Qu'est-ce que la ligne d'événement de répartition fait car elle semble fonctionner quand elle est supprimée. Lorsque je clique sur la colonne 1 après l'exécution du code, le texte de l'en-tête se déplace différemment de la façon dont il se déplace pour les autres colonnes (abit ifficult à expliquer!). Un grand merci quand même. – Dave

+0

Salut Dave. Habituellement, vous devriez être capable d'envoyer un événement depuis le composant et cela devrait l'avoir corrigé. Vous pouvez effacer cela, moi qui voulais montrer la tentative de le faire d'une manière moins hacky. Je vois ce que vous voulez dire, le texte de l'en-tête se déplace en diagonale, pas horizontalement. Je pense que c'est peut-être parce que le clip de flèche de tri n'est pas créé tant que l'entête n'est pas pressé et que nous le piratons, le texte est légèrement décalé (je ne sais pas exactement pourquoi), mais vous pouvez le corriger si vous ajoutez ligne suivante après le hO0.onRelease(): dg.content_mc.header_mc.fHeaderCell0._y = dg.content_mc.header_mc.fHeaderCell1._y; –

+0

Merci George. J'ai trouvé que cela fonctionne aussi bien dg.content_mc.header_mc.hO0.onPress(); dg.content_mc.header_mc.hO0.onRelease(); Il semble faire la pression complète et la libération et cela le corrige. Agréable! Merci encore – Dave

Questions connexes