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