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