hi Vasu,

i have a same requirement..
i have wriitten sum custom component, hope this will solve..

<?xml version="1.0" encoding="utf-8"?>
<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml";
liveScrolling="false"  headerRelease="{stopEvent(event)}"
allowMultipleSelection="true" allowDragSelection="true"
creationComplete="initComp()">
 <!-- Selected Column -->
 <mx:DataGridColumn id="selectColumn"  minWidth="25"  width="25"
dataField="prototype" editable="false"  resizable="false">
    <mx:itemRenderer>
       <mx:Component>
         <mx:Canvas width="100%"  height="100%">
           <mx:CheckBox x="4" focusEnabled="false" id="selectedBox"
mouseEnabled="false" keyUp="{outerDocument.KeyUpEvent(event, data,
(selectedBox))}"
selected="{outerDocument.isSelected(data,outerDocument.selectedItems)}"/>
       </mx:Canvas>
       </mx:Component>
    </mx:itemRenderer>
    <mx:headerRenderer>
      <mx:Component>
       <mx:Canvas width="100%" visible="{outerDocument.getHeaderChkBox()}"
height="100%" click="{outerDocument.headerCheckboxClicked(event)}">

        <mx:CheckBox x="4" id="headerCheckbox" mouseEnabled="false"
selected="{outerDocument.allItemsSelected(outerDocument.selectedItems)}"
keyUp="{outerDocument.HeaderCheckBoxKeyUpEvent(event,(headerCheckbox))}"/>

       </mx:Canvas>
      </mx:Component>
    </mx:headerRenderer>
 </mx:DataGridColumn>
 <mx:Script>
  <![CDATA[
   import mx.events.ResizeEvent;
   import mx.collections.XMLListCollection;
   import mx.collections.ArrayCollection;
   import mx.core.EventPriority;
   import mx.events.ListEvent;
   import mx.controls.Alert;
   import mx.containers.Canvas;
   import mx.core.ComponentDescriptor;
   import mx.controls.listClasses.IListItemRenderer;
   import mx.events.DataGridEvent;
   import mx.controls.CheckBox;
   import mx.collections.ListCollectionView;
   public var _showChkBoxHeader:Boolean=true;
   public var _onclickHeaderCheckBox:Function;
   [Bindable]
   public var enableCopy : Boolean = true;
   private var copyContextItem:ContextMenuItem;
   private var dataToCopy:String = '';
   override public function set columns(value:Array):void
   {
    var newColumns:Array = value.slice();
    if(newColumns.indexOf(selectColumn) == -1)
    {
     newColumns.unshift(selectColumn);
    }
    super.columns = newColumns;
   }

   override protected function
selectItem(item:IListItemRenderer,shiftKey:Boolean,
ctrlKey:Boolean,transition:Boolean = true):Boolean
   {
    //Check to see if the select is from the Checkbox row, all the others
will have a listData property
    if(!(item as Object).hasOwnProperty("listData") && !shiftKey)
    {
     ctrlKey = true;
     return super.selectItem(item, shiftKey, ctrlKey, transition);
    }
    return false;
   }

   // fake all keyboard interaction as if it had the ctrl key down
   override protected function keyDownHandler(event:KeyboardEvent):void
   {
    // this is technically illegal, but works
    event.ctrlKey = true;
    event.shiftKey = false;
    super.keyDownHandler(event);
   }
   // fake all keyboard interaction as if it had the ctrl key down
   public function KeyUpEvent(event:KeyboardEvent, data:Object,
obj:CheckBox):void
   {
    if(event.keyCode == 32 ){
     if(obj.selected) {
      obj.selected=true;
     }
     else{
      obj.selected=false;
     }
     var item:IListItemRenderer = itemToItemRenderer(data);
     //Alert.show(obj.tabIndex + "");
     super.selectItem(item, false, true, true);
    }
   }


   public function isSelected(data:Object, selectedItems:Array):Boolean
   {
    return isItemSelected(data);
   }

   public function headerCheckboxClicked(event:Event):void
   {
       //Either select or deselect all the rows
       if((dataProvider as ListCollectionView).length > 0) {
        if(allItemsSelected())
        {
         //Clear all selected items
         selectedItems = new Array();
        }
        else
        {
         //Select the entire grid
         if(dataProvider is ListCollectionView)
         {
          selectedItems = (dataProvider as ListCollectionView).toArray();
         }
        }
        if(_onclickHeaderCheckBox!=null){
         if(allItemsSelected())
          _onclickHeaderCheckBox(true);
         else
          _onclickHeaderCheckBox(false);
        }
       }
   }
   // 32 is space bar key code.
      public function HeaderCheckBoxKeyUpEvent(event:KeyboardEvent,
obj:CheckBox):void{
       if((dataProvider as ListCollectionView).length == 0 && event.keyCode
== 32 ){
        obj.selected=false;
       }
      }

      public function allItemsSelected(items:Array = null):Boolean
   {
     if(dataProvider is ListCollectionView)
    {
     if((dataProvider as ListCollectionView).length > 0)
     {
      return selectedItems.length == (dataProvider as
ListCollectionView).length;
     }
    }
    return false;
   }

   public function stopEvent(event:DataGridEvent):void
   {
    if(columns[event.columnIndex] == selectColumn)
    {
     event.stopImmediatePropagation();
     event.preventDefault();
    }
   }

   override protected function createChildren():void{
    super.createChildren();
    if(enableCopy){
     createContextMenu();

this.addEventListener(ListEvent.ITEM_ROLL_OVER,copyAllMenuHandler,false,
EventPriority.DEFAULT);
       }
   }


   private function initComp():void{
    selectColumn.width=25;
   }


   private function createContextMenu():void {
         copyContextItem = new ContextMenuItem("Copy All");

copyContextItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,copyAllDataHandler);

              copyContextItem.enabled = true;
      contextMenu = new ContextMenu();
      contextMenu.customItems = [copyContextItem];
      //comment the following line if you want default items in context
menu.
      contextMenu.hideBuiltInItems();
   }

   private function copyAllDataHandler(event:Event):void {
    if(dataToCopy!=null){
       System.setClipboard(dataToCopy);
     }
   }

      private function copyAllMenuHandler(event:ListEvent):void {
       var dgc:DataGridColumn =
event.currentTarget.columns[event.columnIndex] as DataGridColumn;
       var colDataField:String = dgc.dataField;
    var rowIndex:int = event.rowIndex;
    var obj:Object=null;
    if(rowIndex > 0){
     if((event.currentTarget as CheckBoxDataGrid).dataProvider is
ArrayCollection){
      var ac:ArrayCollection = (event.currentTarget as
CheckBoxDataGrid).dataProvider as ArrayCollection;
      if(ac!=null){
        if(ac.length > 0 && rowIndex <= ac.length)
       obj = ac.getItemAt(rowIndex-1);
      }
     }else if((event.currentTarget as CheckBoxDataGrid).dataProvider is
XMLListCollection){
      var xmlLC:XMLListCollection = (event.currentTarget as
CheckBoxDataGrid).dataProvider as XMLListCollection;
      if(xmlLC!=null){
       if(xmlLC.length>0)
       obj = xmlLC.getItemAt(rowIndex-1);
      }
     }
     if(obj!=null)
      dataToCopy = obj[colDataField];
       }
      }


   public function getHeaderChkBox():Boolean{
    return _showChkBoxHeader;
   }
   public function set showChkBoxHeader(chkVal:Boolean):void{
    _showChkBoxHeader=chkVal;
   }
   //Getting Header check Box onclick event
   public function getOnclickHeaderCheckBox():Function{
    return _onclickHeaderCheckBox;
   }
   //Setting Header check Box onclick event
   public function set onclickHeaderCheckBox(onclickFun:Function):void{
    _onclickHeaderCheckBox=onclickFun;
   }

  ]]>
 </mx:Script>

</mx:DataGrid>


Regards,
Meena

On Sat, Mar 14, 2009 at 11:02 AM, Vasu <[email protected]> wrote:

>
>
>        I have a DataGrid with five columns first one for checkboxes(In
> header,item),second one for Id,third one for Name,fourth one for phone
> number and final column is email address.
>
>  In first column of my DataGrid,i have two Renderers one is
> HeaderRenderer and other one is ItemRenderer for the same column with
> checkboxes.
> I'm writing script there only for header checkbox(Id is chkAll) and
> item renderer checkbox(Id is chk).If i select the header checkbox,all
> the item renderer checkboxes are also selected and if i deselect the
> header checkbox then deselect the all itemrenderer checkboxes.
>
> After selecting the checkBox(it may be one (or) All) i need to the
> data from the datagrid by using the button(Delete).
>
> How to do that?
>
> Here am sending the code also,
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="absolute">
>
>        <mx:Script>
>                <![CDATA[
>                        import mx.collections.ArrayCollection;
>
>                        [Bindable]
>            public var arr:ArrayCollection = new ArrayCollection();
>                ]]>
>        </mx:Script>
>        <mx:XMLList id="employees">
>        <employee>
>                <id>111</id>
>            <name>Christina Coenraets</name>
>            <phone>555-219-2270</phone>
>            <email>http://www.yahoo.com</email>
>            <active>true</active>
>        </employee>
>        <employee>
>                <id>222</id>
>            <name>Joanne Wall</name>
>            <phone>555-219-2012</phone>
>            <email>http://www.gmail.com</email>
>            <active>true</active>
>        </employee>
>        <employee>
>                <id>333</id>
>            <name>Maurice Smith</name>
>            <phone>555-219-2012</phone>
>            <email>http://www.rediffmail.com</email>
>            <active>false</active>
>        </employee>
>        <employee>
>                <id>444</id>
>            <name>Mary Jones</name>
>            <phone>555-219-2000</phone>
>            <email>[email protected]</email>
>            <active>true</active>
>        </employee>
>    </mx:XMLList>
>
>        <mx:VBox width="100%" height="100%">
>                <mx:DataGrid id="dg" width="100%" height="60%" rowCount="5"
> dataProvider="{employees}">
>                        <mx:columns>
>                <mx:DataGridColumn sortable="false">
>                        <mx:headerRenderer>
>                                <mx:Component>
>                                        <mx:HBox>
>                                                <mx:Script>
>                                                        <![CDATA[
>                                                                import
> mx.controls.Alert;
>                                                        ]]>
>                                                </mx:Script>
>                                                <mx:CheckBox id="chkAll"
> click="Alert.show('hi')"/>
>                                        </mx:HBox>
>                                </mx:Component>
>                        </mx:headerRenderer>
>                        <mx:itemRenderer>
>                                <mx:Component>
>                                        <mx:HBox>
>                                                <mx:Script>
>                                                        <![CDATA[
>                                                                import
> mx.collections.ArrayCollection;
>                                                                import
> mx.controls.Alert;
>                                                                /*
> [Bindable]
>                                                                private var
> arr:ArrayCollection = new
> ArrayCollection(); */
>                                                                private
> function getData():void {
>
>
>  if(chk.selected)
>                                                                        {
>
>                    outerDocument.arr.addItem
> (outerDocument.dg.selectedItem.id<http://outerdocument.dg.selecteditem.id/>
> );
>
>                    Alert.show("array:"+outerDocument.arr);
>                                                                        }
>                                                                        else
>                                                                        {
>
>    for(var i:uint = 0;i<outerDocument.arr.length; i+
> +)
>
>    {
>
>            if((outerDocument.arr.getItemAt(i)) ==
> (outerDocument.dg.selectedItem.id<http://outerdocument.dg.selecteditem.id/>
> ))
>
>            {
>
>                    outerDocument.arr.removeItemAt(i);
>
>
>            }
>
>    }
>
>    Alert.show("array:"+outerDocument.arr);
>                                                                        }
>                                                                }
>                                                        ]]>
>                                                </mx:Script>
>
>                                                <mx:CheckBox id="chk"
> click="getData()"/>
>                                        </mx:HBox>
>                                </mx:Component>
>                        </mx:itemRenderer>
>                </mx:DataGridColumn>
>                <mx:DataGridColumn dataField="id" headerText="Id"
> visible="false"/>
>                <mx:DataGridColumn dataField="name" headerText="Name"/
> >
>                <mx:DataGridColumn dataField="phone"
> headerText="Phone"/>
>                <mx:DataGridColumn dataField="email"
> headerText="Email"/>
>            </mx:columns>
>        </mx:DataGrid>
>
>        <mx:Form width="100%" height="100%">
>            <mx:FormItem label="Name">
>                <mx:Label 
> text="{dg.selectedItem.name<http://dg.selecteditem.name/>
> }"/>
>            </mx:FormItem>
>            <mx:FormItem label="Email">
>                <mx:Label text="{dg.selectedItem.email}"/>
>            </mx:FormItem>
>            <mx:FormItem label="Phone">
>                <mx:Label text="{dg.selectedItem.phone}"/>
>            </mx:FormItem>
>        </mx:Form>
>        </mx:VBox>
>
> </mx:Application>
>
> Thanks & Regards,
> Srinivas.
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to