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

Responder a