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 -~----------~----~----~----~------~----~------~--~---
