clluiz 0 Denunciar post Postado Abril 8, 2010 Estou enfretando o seguinte problema: Eu tenhum um radiobuttongroup e um comboxbox. Eu preciso que quando eu seleciono um radio diferente o data provider do combobox seja atualizado de acordo com esta opção. Até ai tudo bem. O problema é que quando eu faço a atualização os valores que são listados no grid nao mudam, apesar do data provider dele ter mudado. Os valores novos só aparecem depois que eu clico em algum item do combo. Não sei se o problema ficou muito claro. Alguém já passou por esse problema? Obrigado pela atenção. Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Abril 8, 2010 posta o seu código, fica mais fácil achar o problema []´s Compartilhar este post Link para o post Compartilhar em outros sites
clluiz 0 Denunciar post Postado Abril 9, 2010 O código é meio complicado, mas o principal ta aqui: protected function criteriaOption_changeHandler(event:Event):void { tiCriterio.selectedIndex = -1; markBoxAsValid(boxCriteriaOptions); resetApplicationMessage(); tiDataFinal.text = ""; tiDataInicial.text = ""; search.text = ""; applicationModel.style = "default"; var parameters:Object; tiCriterio.invalidateDisplayList(); tiCriterio.invalidateProperties(); switch(criteriaOption.selectedValue) { case "MUNICIPIO": search.enabled = false; tiCriterio.enabled = true; parameters = new Object(); parameters.modulo = "Interface.UMunicipio"; parameters.acao = "GetLista"; parameters.tipo = "MUNICIPIO"; parameters.time = flash.utils.getTimer().toString(); dispatchEvent(new CriterioEvent(CriterioEvent.LIST,parameters)); break; case "REGIONAL": search.enabled = false; tiCriterio.enabled = true; parameters = new Object(); parameters.modulo = "Interface.URegionalIef"; parameters.acao = "GetLista"; parameters.tipo = "REGIONAL"; parameters.time = flash.utils.getTimer().toString(); dispatchEvent(new CriterioEvent(CriterioEvent.LIST,parameters)); break; case "NUCLEO": search.enabled = false; tiCriterio.enabled = true; parameters = new Object(); parameters.modulo = "Interface.UNucleoIef"; parameters.acao = "GetLista"; parameters.tipo = "NUCLEO"; parameters.time = flash.utils.getTimer().toString(); dispatchEvent(new CriterioEvent(CriterioEvent.LIST,parameters)); break; case "SUPRAM": search.enabled = false; tiCriterio.enabled = true; parameters = new Object(); parameters.modulo = "Interface.URegionalSupram"; parameters.acao = "GetLista"; parameters.tipo = "SUPRAM"; parameters.time = flash.utils.getTimer().toString(); dispatchEvent(new CriterioEvent(CriterioEvent.LIST,parameters)); break; case "TODOS": search.enabled = true; tiCriterio.selectedIndex = -1; tiCriterio.enabled = false; break; } } <mx:FormItem styleName="FormItem" width="100%" label="Escolha o critério da busca"> <mx:HBox id="boxCriteriaOptions" valid="hbox1_validHandler(boxCriteriaOptions)" invalid="hbox1_invalidHandler(boxCriteriaOptions)"> <mx:RadioButtonGroup id="criteriaOption" change="" itemClick="criteriaOption_itemClickHandler(event)"/> <mx:RadioButton id="rb_Municipio" groupName="criteriaOption" enabled="true" label="Município" value="MUNICIPIO" /> <mx:RadioButton id="rb_Regional" groupName="criteriaOption" enabled="true" label="Regional" value="REGIONAL" /> <mx:RadioButton id="rb_Nucleo" groupName="criteriaOption" enabled="true" label="Nucleo" value="NUCLEO" /> <mx:RadioButton id="rb_Supram" groupName="criteriaOption" enabled="true" label="Supram" value="SUPRAM"/> <mx:RadioButton id="rb_All" groupName="criteriaOption" enabled="true" label="Todos" value="TODOS"/> </mx:HBox> </mx:FormItem> <mx:FormItem styleName="FormItem" width="100%" label="Critério"> <utils:ExtendedComboBox id="tiCriterio" dataProvider="{criterioModel.arrayComboCriterio}" enabled="true" width="65%" prompt="Selecione um item..." labelField="NOME" property="ID"/> </mx:FormItem> Sempre q eu escolho um radio eu tenho que recarregar esse combo de criterios de acordo com o valor escolhido. O combo é carregado corretamente. Mas enquanto eu nao escolho um item, a listagem não aparece completa. Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Abril 9, 2010 não vi onde você esta alterando o valor de "arrayComboCriterio" mas ele é um ArrayCollection ? []´s Compartilhar este post Link para o post Compartilhar em outros sites
clluiz 0 Denunciar post Postado Abril 10, 2010 não vi onde você esta alterando o valor de "arrayComboCriterio" mas ele é um ArrayCollection ? []´s Sim é um array collection. package br.ufla.lemaf.sismaf.controllers { import br.events.CriterioEvent; import br.models.ApplicationModel; import br.CriterioModel; import json.JParser; import mx.collections.ArrayCollection; import mx.rpc.AsyncToken; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; import org.swizframework.Swiz; import org.swizframework.controller.AbstractController; public class CriterioController extends AbstractController { [Autowire(bean = "defaultService")] public var defaultService:HTTPService; [Autowire(bean = "utilsService")] public var utilsService:HTTPService; [Autowire(bean = "applicationModel", twoWay = "true")] public var applicationModel:ApplicationModel; [Autowire(bean = "CriterioModel", twoWay = "true")] public var criterioModel:CriterioModel; public function CriterioController() { super(); } /* Dispara uma requisição para retornar uma lista de objetos dessa classe */ [Mediate(event = "CriterioEvent.LIST", properties = "data")] public function listCriterio (data:Object):void { var call:AsyncToken = utilsService.send(data); executeServiceCall(call, function (event:ResultEvent):void { var rawData:String = event.result as String; var jObj:Object = JParser.decode(rawData); criterioModel.arrayComboCriterio = new ArrayCollection(jObj as Array); }); } } } É aqui q eu faco a mudança do array collection. Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Abril 12, 2010 duas coisas 1) veja se essa variável "arrayComboCriterio" esta com [bindable] 2) teste tb colocar essa linha nessa classe que você postou acima: var rawData:String = event.result as String; var jObj:Object = JParser.decode(rawData); criterioModel.arrayComboCriterio = new ArrayCollection(jObj as Array); criterioModel.arrayComboCriterio.update() []´s Compartilhar este post Link para o post Compartilhar em outros sites
clluiz 0 Denunciar post Postado Abril 13, 2010 O arrayComboCriterio ta como Bindable.Eu tentei colocar o update como você disse, mas fala q nao existe esse método, mas eu tentei um que se chama refresh, mas tb não deu. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Abril 13, 2010 o refresh so funciona se for arraycollection. criterioModel.arrayComboCriterio = new ArrayCollection(jObj as Array); criterioModel.arrayComboCriterio = new ArrayCollection(jObj); Compartilhar este post Link para o post Compartilhar em outros sites
clluiz 0 Denunciar post Postado Abril 14, 2010 Consegui resolver pessoal. Eu fiz o seguinte: Na declaração do Combo: <mx:FormItem styleName="FormItem" width="100%" label="Critério"> <utils:ExtendedComboBox id="tiCriterio" updateComplete="tiCriterio_updateCompleteHandler(event)" dataProvider="{criterioModel.arrayComboCriterio}" enabled="true" width="65%" prompt="Selecione um item..." labelField="NOME" property="ID" itemRenderer="mx.controls.Label"/> </mx:FormItem> Eu usei o updateComplete e usei a seguinte função para tratá-lo: protected function tiCriterio_updateCompleteHandler(event:FlexEvent):void { tiCriterio.invalidateDisplayList(); } Obrigado a todos pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites