Worked like a champ. Thanks for the help. >From: "bhaq1972" <[EMAIL PROTECTED]> >Reply-To: [email protected] >To: [email protected] >Subject: [flexcoders] Re: bypass the change event >Date: Thu, 23 Jun 2005 15:24:57 -0000 > >I had a similar issue, where the validation/redbox error was being >fired off when i didnt want it to be. > >this is the way i see it. > >your validator is monitoring combobox.selectedIndex ie > ><mx:Model id="validationModel"> > <facilityType>{facilityType.selectedIndex}</facilityType> ></mx:Model> > >So everytime your selectedIndex changes (like in a modelChanged) you >trigger validation..........Therefore, don't monitor selectedIndex. > >You could try the following - >Create an extended combobox with an extra property called 'myIndex'. >And monitor that i.e. > ><mx:Model id="validationModel"> > <facilityType>{facilityType.myIndex}</facilityType> ></mx:Model> > >myIndex would be updated with the selectedIndex value during the >combobox change event. >eg > ><mx:ComboBox change="doChange(event)"> ><mx:Script> > >var __myIndex:Number; >[ChangeEvent("mychanged")] >function get myIndex():Number >{ > return __myIndex; >} > >function set myIndex(txt:Number):Void >{ > __myIndex = txt; > > dispatchEvent({type:"myChanged"}); >} > >function doChange(event){ >myIndex = selectedIndex; >} > >its a bit long winded but it should give you some ideas. >(and the code is untested). > > > > >--- In [email protected], "Tim Dwelle" <[EMAIL PROTECTED]> wrote: > > The prompt property helps simplify things a bit, but doesn't solve >the > > problem. > > > > In fact, it seems to create its own problem. When I use the >prompt in > > conjunction with a combobox using the data provider / >labelField... it now > > highlights the first 2 options (the prompt and the first option >from the > > webservice) whenever item 0 is selected! Works like a champ when >the > > combobox has all string items, though... > > > > Regardless of that cosmetic issue, the real problem is that the >modelChanged > > event (I'm guessing that is the one) seems to also trigger >validation. So > > even though we aren't firing off a change event because we won't >have to set > > the selectedIndex, we are still triggering validation when the >combobox gets > > populated. > > > > That's the bit I'm trying to avoid. I don't want the box to turn >red until > > the user actually makes a selection, or when we call >isSelectionValid(). Any > > ideas? > > > > Thanks again. > > > > -Tim. > > > > >From: "Matt Chotin" <[EMAIL PROTECTED]> > > >Reply-To: [email protected] > > >To: <[email protected]> > > >Subject: RE: [flexcoders] bypass the change event > > >Date: Wed, 22 Jun 2005 22:38:28 -0700 > > > > > >What if you used the ComboBox prompt property instead and only >set the > > >selectedIndex if you have a real value? It might avoid the >change event > > >firing there too. > > > > > > > > > > > >Matt > > > > > > > > > > > >________________________________ > > > > > >From: [email protected] >[mailto:[EMAIL PROTECTED] On > > >Behalf Of dwellet > > >Sent: Wednesday, June 22, 2005 1:43 PM > > >To: [email protected] > > >Subject: [flexcoders] bypass the change event > > > > > > > > > > > >I have this combobox. > > > > > >The combobox is populated by a webservice. > > > > > >When the webservice result arrives, I have a utility function that > > >adds a 'Pick an item...' sort of option at the top of the >dropdown, > > >and then selects the appropriate selected item. If there is no > > >appropriate selected item, it picks index 0 (the dummy 'Pick an > > >item...'). > > > > > >I have a validator that validates that the combobox has a real > > >selection. > > > > > >The problem is... I want my utility function to happen >in "stealth" > > >mode. If the user changes the combobox, I want it to be >validated. But > > >if I programatically set the selectedIndex, I don't want any >events to > > >fire and trigger validation. > > > > > >Ironically, I read that in Flex 1.0, changing the selectedIndex >did > > >not fire a change event, but this was "fixed" in 1.5. The old >behavior > > >is precisely what I want. Any way to temporarily bypass that >change > > >event firing? > > > > > >Code included below... Thanks for your help! > > > > > >-Tim. > > > > > > > > > > > > > > >[ComboBoxValidator.as] > > > > > > > > >import mx.controls.*; > > >import mx.validators.*; > > > > > >/* ComboBoxValidator > > >* > > >* Validate that a user does not select the dummy option (eg. > > >* 'Pick a value...') in a required combobox. > > >* > > >*/ > > >class ComboBoxValidator extends Validator > > >{ > > > public function doValidation(foo:String) : Void > > > { > > > var n = Number(foo); > > > if (n == 0) > > > { > > > validationError("noSelection", "Field is required.", >null); > > > } > > > } > > >} > > > > > > > > > > > > > > > > > >[Test.mxml] > > > > > > > > ><mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" > > > xmlns:dom="*" > > > creationComplete="start()"> > > > > > > <mx:Script> > > > <![CDATA[ > > > import mx.controls.*; > > > import mx.containers.*; > > > import mx.managers.*; > > > import mx.validators.*; > > > > > > import com.dom.sampling.vo.*; > > > > > > var model : SampleSite; > > > > > > var PICK_A_FACILITY_TYPE : FacilityType; > > > > > > /* start() > > > * > > > * Perform basic setup. > > > * > > > */ > > > function start() > > > { > > > PICK_A_FACILITY_TYPE = new FacilityType(); > > > PICK_A_FACILITY_TYPE.name = "Choose a facility >type..."; > > > service.getAllFacilityTypes(); > > > > > > if (!model) > > > { > > > model = new SampleSite(); > > > } > > > } > > > > > > /* prepareCombobox() > > > * > > > * Prepares a combobox by adding a first, descriptive > > > * option (eg. 'Pick a value...') to the dropdown. It > > > * also sets the initial value of the combobox, either > > > * to the item matching the passed in initialValue, or > > > * if no match is found, to the first item in the > > > * combobox. > > > * > > > * @param combobox the combobox to prepare > > > * > > > * @param pickAValue the first, descriptive option > > > * (eg. 'Pick a value...') to add > > > * to the combobox > > > * > > > * @param initialValue the initialValue the combobox > > > * should be set to > > > */ > > > public function prepareComboBox(combobox: ComboBox, > > > pickAValue: Object, > > > initialValue: Object) : >Void > > > { > > > if (pickAValue) > > > { > > > combobox.addItemAt(0, pickAValue); > > > combobox.selectedIndex = 0; > > > } > > > > > > if (initialValue) > > > { > > > for (var i=0; i < combobox.length; i++) > > > { > > > var item = combobox.getItemAt(i); > > > > > > // object > > > if (item instanceof Object && > > > item.id == initialValue.id) > > > { > > > combobox.selectedIndex = i; > > > } > > > > > > // non-object > > > else if (item == initialValue) > > > { > > > combobox.selectedIndex = i; > > > } > > > } > > > } > > > } > > > > > > ]]> > > > </mx:Script> > > > > > > <mx:WebService id="service" > > > wsdl="/sampling-ws/services/LocationService? >wsdl" > > > showBusyCursor="true"> > > > > > > <mx:operation name="getAllFacilityTypes" > > > result="prepareComboBox(facilityType, > > >PICK_A_FACILITY_TYPE, model.facilityType)"/> > > > > > > </mx:WebService> > > > > > > <mx:Panel title="Administer Sample Site" width="100%"> > > > <mx:FormItem width="100%" required="true" label="Facility > > >Type"> > > > <mx:ComboBox id="facilityType" > > >dataProvider="{service.getAllFacilityTypes.result}" > > >labelField="name"/> > > > </mx:FormItem> > > > </mx:Panel> > > > > > > <mx:Model id="validationModel"> > > > <facilityType>{facilityType.selectedIndex}</facilityType> > > > </mx:Model> > > > > > > <dom:ComboBoxValidator required="true" > > >field="validationModel.facilityType"/> > > > > > ></mx:Application> > > > > > > > > > > > > > > > > > >________________________________ > > > > > >Yahoo! Groups Links > > > > > >* To visit your group on the web, go to: > > > http://groups.yahoo.com/group/flexcoders/ > > > > > >* To unsubscribe from this group, send an email to: > > > [EMAIL PROTECTED] > > ><mailto:[EMAIL PROTECTED] >subject=Unsubscribe> > > > > > >* Your use of Yahoo! Groups is subject to the Yahoo! Terms of > > >Service <http://docs.yahoo.com/info/terms/> . > > > > >
-- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

