Thank you. That expression is bringing back only itself, i.e. the element in the DP with the ID I'm testing against.
I'm hoping to have an element with an ID of '3', to bring back '31', '32', etc... I've adjusted the expression thinking it will do the trick but it doesn't seem to cut it: var pattern:RegExp = new RegExp(currentID + "\d*"); Doesn't this say as long as the test string has the currentID at the beginning plus any digits after it??? and then i test the string like this: activeID.match( pattern ) thanks for your help. matt --- In [email protected], thomas parquier <mailingli...@...> wrote: > > I'm not sure currentID is replaced in slash syntax, so : > var pattern:RegExp = new RegExp('^'+currentID); > should work. > > thomas > --- > http://www.web-attitude.fr/ > msn : thomas.parqu...@... > softphone : sip:webattit...@... <sip%3awebattit...@...> > téléphone portable : +33601 822 056 > > > 2009/5/3 fumeng5 <fume...@...> > > > > > > > Wow, works like a charm; big thanks. > > > > And if I want to test it against IDs with 3 characters I'm thinking that > > RegExes are the way to go. Here's what I've got that isn't quite working. > > > > var currentID:String = item.id.toString(); > > var pattern:RegExp = /^<currentID>/; > > > > if ( pattern.test( activeID ) ) > > > > return true; > > else > > return false; > > > > I'm thinking my pattern will test for the currentID (no matter how many > > characters) at the beginning of the activeID. But it's not making any > > matches. Am I that far off? > > > > --- In [email protected] <flexcoders%40yahoogroups.com>, "Tracy > > Spratt" <tracy@> wrote: > > > > > > Assuming strings: > > > > > > If (currentID.charAt(0) == activeID) { //if the first > > > character matches the activeId > > > > > > return true; > > > > > > } > > > > > > Else { > > > > > > return false; > > > > > > } > > > > > > > > > > > > > > > > > > If the ids are numbers then the logic will be different. > > > > > > > > > > > > Tracy Spratt, > > > > > > Lariat Services, development services available > > > > > > _____ > > > > > > From: [email protected] <flexcoders%40yahoogroups.com> [mailto: > > [email protected] <flexcoders%40yahoogroups.com>] On > > > Behalf Of fumeng5 > > > Sent: Saturday, May 02, 2009 5:19 PM > > > To: [email protected] <flexcoders%40yahoogroups.com> > > > Subject: [flexcoders] Re: Sorting VBox elements based on an XML ID > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm creating an ArrayCollection based on the XML loaded in. I iterate > > over > > > that and build the UI. I have a simple conditional that decides whether > > to > > > run one block of code and create a button or run another and create a > > radio > > > button. I think that part is fine as it is right now. > > > > > > I've never worked with a Filter function before but what I'm > > understanding > > > is that I can get the ID for the button clicked without a problem. I've > > > tested that and it works. I just don't know how to compare that ID with > > all > > > the other IDs and return only the ones I want. > > > > > > This is what I have so far for the Filter function: > > > > > > private function stateFilterFunc(item:Object):Boolean { > > > var currentID:String = item.id; // The ID of the current item in the > > > DataProvider > > > var activeID:String = buttonID; // The ID of the button clicked on > > > > > > if ( (activeID< currentID) ) > > > return true; > > > else > > > return false; > > > } > > > > > > So, how do I build the conditional that'll allow me to, in the case where > > ID > > > = 1, filter to show IDs that have 1, 11, 12, 13, etc... > > > > > > And the IDs are 1 and 2 characters. > > > > > > Thank you for your help. > > > > > > Matt > > > > > > --- In flexcod...@yahoogro > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > > ups.com, > > > "Tracy Spratt" <tracy@> wrote: > > > > > > > > In that case I would create a component that had two states, one radio > > and > > > > one button, and repeat that, passing in the entire currentItem in a > > setter > > > > function, and set the state based on the passed in data. > > > > > > > > > > > > > > > > On the filter, are you asking for an e4x expression? > > > > > > > > > > > > > > > > One tip is that in an e4x expression, you can use a function in place > > of > > > > in-line expressions, pass a ref to the current node into the function, > > do > > > > whatever logic and return a Boolean if the node should be included. > > > > > > > > > > > > > > > > Are all the ids 1 or 2 chars only? > > > > > > > > > > > > > > > > Tracy Spratt, > > > > > > > > Lariat Services, development services available > > > > > > > > _____ > > > > > > > > From: flexcod...@yahoogro > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > > ups.com > > > [mailto:flexcod...@yahoogro > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > > ups.com] > > > On > > > > Behalf Of fumeng5 > > > > Sent: Saturday, May 02, 2009 11:58 AM > > > > To: flexcod...@yahoogro > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > > ups.com > > > > Subject: [flexcoders] Re: Sorting VBox elements based on an XML ID > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I've got it almost working now. However, I'm trying to write a Filter > > > > function. This function will compare an ID and return a subset of IDs. > > > > > > > > For example, an ID of 1 will return IDs with 11, 12, 13; an ID of 2 > > will > > > > return IDs with 21, 22, 23, etc... > > > > > > > > How do I compare IDs as strings to return what I want? Any tip in the > > > right > > > > direction is greatly appreciated. > > > > > > > > --- In flexcod...@yahoogro > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > > ups.com, > > > > "fumeng5" <fumeng5@> wrote: > > > > > > > > > > Hmmm...I didn't know about the Repeater component, that's quite > > useful. > > > > However, I should have explained that I'm not working with all the same > > > > components. The XML is more complex than I posted. > > > > > > > > > > Here's what it really looks like: > > > > > > > > > > <Class> > > > > > <Class_ID>1</Class_ID> > > > > > <Class_Name>First Class</Class_Name> > > > > > <Class_Amount></Class_Amount> > > > > > </Class> > > > > > > > > > > <Class> > > > > > <Class_ID>2</Class_ID> > > > > > <Class_Name>Second Class</Class_Name> > > > > > <Class_Amount>1.31</Class_Amount> > > > > > </Class> > > > > > > > > > > <Class> > > > > > <Class_ID>11</Class_ID> > > > > > <Class_Name>Subclass of first class</Class_Name> > > > > > </Class> > > > > > > > > > > So my conditional for building the UI goes like this; if Class_Amount > > is > > > > empty, this element has a subclass, i.e. > > > > > > > > > > for (var i:int=0; i<classData.length; i++){ > > > > > > > > > > if(classDataNode.Class_Amount == ''){ > > > > > var myButton:Button = new Button(); > > > > > myButton.label = classData[i].Class_Name; > > > > > addChild( myButton ); > > > > > }else{ > > > > > var myRadioButton:RadioButton = new RadioButton(); > > > > > myRadioButton.label = classData[i].Class_Name; > > > > > addChild( myRadioButton ); > > > > > } > > > > > } > > > > > > > > > > I guess that with this scenario I'm not able to use the Repeater > > > compnent > > > > and will be forced to create a custom sorting of VBox child elements. > > > > > > > > > > Is that right? > > > > > > > > > > --- In flexcod...@yahoogro > > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com> > > > > > > ups.com, > > > > "Tracy Spratt" <tracy@> wrote: > > > > > > > > > > > > Use Repeater, and then just sort the dataProvider. > > > > > > > > > > > > > > > > > > > > > > > > Tracy Spratt, > > > > > > > > > > > > Lariat Services, development services available > > > > > > > > > > > > _____ > > > > > > > > > > > > From: flexcod...@yahoogro > > > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com> > > > > > > ups.com > > > > [mailto:flexcod...@yahoogro > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > > ups.com] > > > > On > > > > > > Behalf Of fumeng5 > > > > > > Sent: Friday, May 01, 2009 3:15 PM > > > > > > To: flexcod...@yahoogro > > > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > > ups.com > > > > > > Subject: [flexcoders] Sorting VBox elements based on an XML ID > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > I've got something that I'm trying to troubleshoot and I can't > > figure > > > it > > > > > > out. I have an XML file full of elements, i.e. > > > > > > > > > > > > <Class> > > > > > > <Class_ID>1</Class_ID> > > > > > > <Class_Name>First Class</Class_Name> > > > > > > </Class> > > > > > > > > > > > > <Class> > > > > > > <Class_ID>2</Class_ID> > > > > > > <Class_Name>Second Class</Class_Name> > > > > > > </Class> > > > > > > > > > > > > <Class> > > > > > > <Class_ID>11</Class_ID> > > > > > > <Class_Name>Subclass of first class</Class_Name> > > > > > > </Class> > > > > > > > > > > > > <Class> > > > > > > <Class_ID>21</Class_ID> > > > > > > <Class_Name>Subclass of second class</Class_Name> > > > > > > </Class> > > > > > > > > > > > > ... > > > > > > > > > > > > Some classes have subclasses, i.e. Class ID 1 has a subclass of > > Class > > > ID > > > > 11. > > > > > > And Class ID 2 has a subclass of Class ID 21. > > > > > > > > > > > > My XML parsing class creates UI elements based on the XML and adds > > > them > > > > to a > > > > > > VBox, i.e. > > > > > > > > > > > > private var classXML:XML; > > > > > > private var classData:XMLList; > > > > > > > > > > > > for (var i:int=0; i<classData.length; i++){ > > > > > > > > > > > > var myButton:Button = new Button(); > > > > > > myButton.label = classData[i].Class_Name; > > > > > > > > > > > > addChild( myButton ); > > > > > > } > > > > > > > > > > > > When the XML first loads, the elements will be added to the VBox in > > > the > > > > way > > > > > > they're defined in the XML. > > > > > > > > > > > > However, I have to add the functionality that if a class is clicked > > it > > > > goes > > > > > > to the top of the VBox and all its subclasses are listed right > > under > > > it > > > > i.e. > > > > > > Class ID 1 is clicked, it goes to the top with Class ID 11 right > > under > > > > it. > > > > > > > > > > > > This is what I don't know how to do. What is the best way to resort > > > > children > > > > > > in a VBox based on ID? > > > > > > > > > > > > Any tips are very much appreciated. > > > > > > > > > > > > Thank you. > > > > > > > > > > > > > > > > > > > > > > > > >

