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

Responder a