neste caso vc tem que mexer no código que trata o evento click/change que 'muda o estado da aplicação'. lá testar onde foi o click e se foi no checkbox ignorar e não 'mudar o estado'...
On 27 jan, 16:59, Andre Coelho <[email protected]> wrote: > Eia o problema, a lina nao pode ser selecionada, pq o select dela faz uma > outra ação. No caso, muda o estado da aplicação > > André Coelho Brait da Silva > TeCGraf > > Tel: (21) 3527-2502 > Cel: (21) 8836-7622 > > On Tue, Jan 27, 2009 at 4:25 PM, Julio carneiro <[email protected]>wrote: > > > > > vc já tentou setar o selectedIndex=-1, do datagrid quando o checkbox é > > clicado? ou o selectedItem=null? > > > qualquer um dos dois deve de-selecionar a linha. > > > julio > > > On 27 jan, 14:36, Andre Coelho <[email protected]> wrote: > > > É, vc não entendeu o meu problema... =P > > > > Meu problema não é no header, o meu funciona perfeitamente. > > > Meu problema é que eu tenho uma checkBox em cada linha do dataGrid. Só > > que, > > > quando eu clico no checkbox, ele acaba selecionando a linha referente a > > ele > > > no dataGrid também. > > > O comportamento que eu quero é o seguinte: clicou na checkBox, marca só a > > > checkBox. Clicou em qualquer outra parte daquela linha do dataGrid, marca > > a > > > linha toda. > > > > André Coelho Brait da Silva > > > TeCGraf > > > > Tel: (21) 3527-2502 > > > Cel: (21) 8836-7622 > > > > 2009/1/27 Andre Coelho <[email protected]> > > > > > Obrigado pela resposta Luis. Eu aidna nao testei a solução, mas só pra > > > > tirar uma dúvida q jah pintou, pq existe a necessidade de se ter um > > header > > > > renderer? Eu já tenho um headerRenderer de checkbox, não sei se tá > > parecido, > > > > aidna vou verificar. > > > > Só gostaria de saber se você colou ele aí por alguma necessidade > > específica > > > > > André Coelho Brait da Silva > > > > TeCGraf > > > > > Tel: (21) 3527-2502 > > > > Cel: (21) 8836-7622 > > > > > 2009/1/27 Luiz Nogueira <[email protected]> > > > > >> André bom dia, > > > > >> Cara não sei se entendi muito bem o que vc quer. > > > >> Mas tipo assim vou colocar um código aqui que talvez te ajude em algo. > > > >> Qualquer coisa estamos ai... > > > > >> Vamos criar um class CheckBoxHeaderRenderer > > > >> o cdigo que ele vai ter é o seguinte: > > > > >> package > > > >> { > > > >> import flash.events.MouseEvent; > > > >> import mx.controls.CheckBox; > > > >> import mx.controls.DataGrid; > > > >> import mx.controls.dataGridClasses.DataGridColumn; > > > >> import mx.controls.dataGridClasses.DataGridListData; > > > >> import mx.events.DataGridEvent; > > > > >> public class CheckBoxHeaderRenderer extends CheckBox > > > >> { > > > > >> public function CheckBoxHeaderRenderer() > > > >> { > > > >> super(); > > > >> } > > > > >> private var _data:DataGridColumn; > > > > >> override public function get data():Object > > > >> { > > > >> return _data; > > > >> } > > > > >> override public function set data(value:Object):void > > > >> { > > > >> _data = value as DataGridColumn; > > > >> label = DataGridListData(listData).label + " as plain > > > >> text"; > > > >> DataGrid(listData.owner).addEventListener > > > >> (DataGridEvent.HEADER_RELEASE, sortEventHandler); > > > >> selected = (data.getStyle("plainText") == true); > > > > >> } > > > > >> private function sortEventHandler(event:DataGridEvent):void > > > >> { > > > >> if (event.itemRenderer == this) > > > >> event.preventDefault(); > > > >> } > > > > >> override protected function clickHandler(event:MouseEvent):void > > > >> { > > > >> super.clickHandler(event); > > > >> if (selected) > > > >> data.setStyle("plainText", true); > > > >> else > > > >> data.setStyle("plainText", false); > > > > >> DataGrid(listData.owner).invalidateList(); > > > >> } > > > > >> } > > > > >> } > > > > >> //fim do class > > > > >> no caso aqui vou usar um HTML para o checkbox manipular blz? > > > > >> vamos criar um outro class TextOrHTMLRenderer > > > > >> package > > > >> { > > > >> import mx.controls.DataGrid; > > > >> import mx.controls.dataGridClasses.DataGridItemRenderer; > > > >> import mx.controls.dataGridClasses.DataGridColumn; > > > > >> public class TextOrHTMLRenderer extends DataGridItemRenderer > > > >> { > > > > >> public function TextOrHTMLRenderer() > > > >> { > > > >> super(); > > > >> } > > > > >> override public function validateProperties():void > > > >> { > > > >> super.validateProperties(); > > > >> if (listData) > > > >> { > > > >> var dg:DataGrid = DataGrid(listData.owner); > > > > >> var column:DataGridColumn = > > > >> dg.columns[listData.columnIndex]; > > > >> htmlText = data[column.dataField]; > > > > >> if (getStyle("plainText")) > > > >> { > > > >> text = text; > > > >> } > > > >> } > > > >> } > > > > >> } > > > > >> } > > > > >> //fim do class > > > > >> agora nosso aplicativo dg.mxml > > > > >> <?xml version="1.0" encoding="utf-8"?> > > > >> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > > > >> xmlns:local="*" > > > > > >> <mx:Script> > > > >> <![CDATA[ > > > > >> private var dp:Array = [ > > > >> { symbol: "ADBE", name: "Adobe Systems Inc.", > > > >> news: "Adobe Flex is <b>great</b>! according to > > > >> <i>FlexCoders</ > > > >> i>" }, > > > >> { symbol: "MACR", name: "Macromedia Inc.", > > > >> news: "<FONT color='#FF0000'>Macromedia</FONT> is > > absorbed > > > >> into > > > >> Adobe" }, > > > >> { symbol: "MSFT", name: "Microsoft Corp.", > > > >> news: "Microsoft sees <FONT size='20'>Flex</FONT> for > > the > > > >> first > > > >> time" }, > > > >> { symbol: "IBM", name: "IBM Corp.", > > > >> news: "IBM was once the top <b><i>dog</i></b> but no > > more" > > > >> } > > > >> ]; > > > > >> ]]> > > > >> </mx:Script> > > > > >> <mx:DataGrid id="dg1" initialize="dg1.dataProvider = dp" > > > >> paddingTop="0" paddingBottom="0" verticalAlign="middle" > > > >> variableRowHeight="true" > > > > >> <mx:columns> > > > >> <mx:DataGridColumn headerText="Name" dataField="name" width="140"/> > > > >> <mx:DataGridColumn headerText="Symbol" dataField="symbol" width="60" / > > > > >> <mx:DataGridColumn headerText="News" dataField="news" wordWrap="true" > > > >> width="200" > > > >> headerRenderer="CheckBoxHeaderRenderer" > > > >> itemRenderer="TextOrHTMLRenderer" /> > > > >> </mx:columns> > > > >> </mx:DataGrid> > > > > >> </mx:Application> > > > > >> //fim do aplicativo > > > > >> Bem espero ter te ajudado... > > > > >> Abraço, > > > > >> Luiz Nogueira > > > > >> On 26 jan, 14:20, Andre Coelho <[email protected]> wrote: > > > >> > Eu sei que o assunto do checkbox no datagrid já foi bastante > > discutido > > > >> aqui > > > >> > na lista, ams eu não consegui achar ninguém com um problema igual ao > > > >> meu. > > > > >> > Eu já consigo colcoar o checkbox no datagrid e td mais. Tb consigo > > > >> editar a > > > >> > minha propiedade no objeto referenciado. > > > > >> > O meu problema é que eu quero que, ao clicar na checkbox, a linha em > > à > > > >> qual > > > >> > ela pertence não seja selecionada. Mas caso clique em qualquer outra > > > >> célula, > > > >> > a linha inteira deve ser selecionada. > > > >> > O meu comportamento, por enquanto, é "a linha é selecioanda ao > > clicar no > > > >> > checkbox". > > > > >> > Eu cheguei a criar um renderer para poder capturar o evento do > > > >> mouseClick e > > > >> > dar um event.stopImmediatePropagation(), mas não deu certo. Acho que > > a > > > >> > seleção na tabela está capturando o evento antes de chegar no > > > >> clickHandler > > > >> > do checkBox. > > > > >> > Por enquanto, meu renderer está vazio. > > > >> > O código da coluna está assim: > > > > >> > <Control:CheckBoxHeaderColumn headerWordWrap="true" > > textAlign="center" > > > >> > headerText=" " > > > >> > width="25" sortable="false" dataField="selected" > > > >> > rendererIsEditor="true" > > > > >> > headerRenderer="View.lqgRenderers.CheckBoxHeaderRenderer"> > > > >> > <Control:itemRenderer> > > > >> > <mx:Component> > > > >> > <lqgRenderers:CheckBoxRenderer > > > >> > selectedField="selected" change="data.selected = selected" /> > > > >> > </mx:Component> > > > >> > </Control:itemRenderer> > > > >> > </Control:CheckBoxHeaderColumn> > > > > >> > O CheckBoxHeaderColumn é um header, que estende > > AdvancedDataGridColumn, > > > >> com > > > >> > um um checkBox que está funcionando numa boa. > > > >> > Alguma dica do que eu devo colocar dentro do CheckBoxRenderer? > > > > >> > André Coelho Brait da Silva > > > >> > TeCGraf > > > > >> > Tel: (21) 3527-2502 > > > >> > Cel: (21) 8836-7622 --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [email protected] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---
