flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Harui <aha...@adobe.com>
Subject Re: How to avoid sorting on click of headerrenderer?
Date Wed, 10 Dec 2014 18:44:49 GMT
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf66ce9
-7fd6.html

The “headerRelease” event can be cancelled with preventDefault.

Also note that the checkbox change is probably a result of mouse events
that the DG is using to send the headerRelease event, so another option is
to stopImmediatePropagation on mouseEvents, but that might screw up
something else.

-Alex

On 12/10/14, 2:27 AM, "Deepak MS" <megharajdeepak@gmail.com> wrote:

>Here's what I'm trying(sample application):
>
>
><?xml version="1.0" encoding="utf-8"?>
><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
>layout="vertical"
>minWidth="955" minHeight="600" >
>
>    <mx:Script>
>        <![CDATA[
>            import mx.utils.ObjectUtil;
>            public function
>sortStringFunction(totalFieldName:String,totalValue:String,
>fieldName:String,  isNumeric:Boolean = false):Function{
>
>                return function(obj1:Object, obj2:Object):int
>                {
>                    if(obj1[totalFieldName] == totalValue){
>
>
>                        return 0;
>
>                    }else if(obj2[totalFieldName] == totalValue){
>
>
>                        return 0;
>
>                    }else{
>
>                        if(isNumeric)
>                        {
>                            return
>ObjectUtil.numericCompare(obj1[fieldName],obj2[fieldName]);
>                        }else
>                        {
>                            return
>ObjectUtil.stringCompare(obj1[fieldName],obj2[fieldName],true);
>                        }
>
>                    }
>
>                }
>            }
>        ]]>
>    </mx:Script>
>
>    <mx:ArrayCollection id="ac">
>        <mx:Object ischecked="true" color="" name="ABC"/>
>        <mx:Object ischecked="true" color="" name="KJHD"/>
>        <mx:Object ischecked="true" color="" name="ADFDGG"/>
>        <mx:Object ischecked="true" color="" name="SDF"/>
>        <mx:Object ischecked="true" color="" name="TRF"/>
>        <mx:Object ischecked="true" color="" name="DF"/>
>        <mx:Object ischecked="true" color="" name="YTU"/>
>        <mx:Object ischecked="true" color="" name="Total"/>
>    </mx:ArrayCollection>
>    <mx:DataGrid dataProvider="{ac}" width="500" height="500"
>sortableColumns="true">
>        <mx:columns>
>            <mx:DataGridColumn sortable="true"
>sortCompareFunction="{sortStringFunction('name','Total','name')}">
>                <mx:headerRenderer>
>                    <mx:Component>
>                        <mx:VBox  paddingLeft="5" verticalAlign="middle"
>horizontalAlign="left">
>                            <mx:Script>
>                                <![CDATA[
>                                    import mx.controls.Alert;
>                                    import mx.events.DataGridEvent;
>
>                                    protected function
>checkbox2_changeHandler(event:Event):void
>                                    {
>
>                                        /*  event.preventDefault();
>                                        event.stopImmediatePropagation();
>*/ // this doesn't avoid sorting. I want to avoid default sorting here
>
>                                        for each(var item:Object in
>outerDocument.ac)
>                                        {
>                                            item['ischecked'] =
>event.currentTarget.selected;
>                                        }
>
>                                        outerDocument.ac.refresh();
>                                    }
>
>
>                                ]]>
>                            </mx:Script>
>
>                            <mx:HBox>
>                                <mx:Button width="15" height="15"/>
>                                <mx:Label text="ATCs" />
>                            </mx:HBox>
>                            <mx:CheckBox
>change="checkbox2_changeHandler(event)" label="Check All" />
>                        </mx:VBox>
>
>                    </mx:Component>
>                </mx:headerRenderer>
>
>                <mx:itemRenderer>
>                    <mx:Component>
>
>                        <mx:CheckBox selected="{data.ischecked}" label="{
>data.name}">
>
>                        </mx:CheckBox>
>
>                    </mx:Component>
>                </mx:itemRenderer>
>            </mx:DataGridColumn>
>        </mx:columns>
>    </mx:DataGrid>
></mx:Application>
>
>
>On Wed, Dec 10, 2014 at 3:24 PM, Deepak MS <megharajdeepak@gmail.com>
>wrote:
>
>> Yes, I did. On click of header button, I called those 2 methods but it
>> still sorts the column data.
>>
>> On Wed, Dec 10, 2014 at 3:15 PM, Evyatar Ben Halevi-Arbib <
>> evyatarbh@gmail.com> wrote:
>>
>>> Have you tried using the following calls in your renderer's event
>>>handler
>>> function?
>>> event.preventDefault();
>>> event.stopImmediatePropagation()
>>>
>>> Regards,
>>> Evyatar
>>>
>>> On Wed, Dec 10, 2014 at 11:30 AM, Deepak MS <megharajdeepak@gmail.com>
>>> wrote:
>>>
>>> > Hey guys,
>>> > I have a Datagrid with first column being a custom itemrenderer with
>>>a
>>> > check box, a box(to display color) and then a label.
>>> >
>>> > I am using headererRenderer too for that column, but with a check box
>>> and a
>>> > button. The header's check box is used to check\uncheck all items in
>>>the
>>> > datagrid.
>>> >
>>> > When I click on headererenderer's button or checkbox, the data is
>>> getting
>>> > sorted in the grid. I don't want to do sort when I click on any item
>>>in
>>> > headerenderer, I want to sort it only when user clicks on header
>>>apart
>>> from
>>> > that button and checkbox.
>>> >
>>> > I tried to stop event propogation, but always header release event is
>>> > triggered first than headerrenderer's button or check box click. So
>>>stop
>>> > propagation wont work.
>>> >
>>> > Is there anyway to avoid sorting on click of headerrenderer item? I'm
>>> using
>>> > Flex 3.6.
>>> >
>>> > Cheers!
>>> >
>>>
>>
>>

Mime
View raw message