<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" width="100" height="100%">
    
                 <!--itemRenderer="DataGridItemRendererColorFull"-->
    <mx:DataGrid id="dataGrid" height="100%" width="100"
                 dataProvider="{new Array()}"
                 >
        <mx:columns>
            <mx:DataGridColumn headerText="TASK" dataField="TASK"/>
        </mx:columns>
    </mx:DataGrid>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    
    <fx:Script>
        <![CDATA[
            
            private var _selectedItem:Object = null;
            
            private var _filteredDataProvider:Array = new Array();
            /** sets a filtered dataprovider where elements have a property called ["hide"]
             * which is false or true and depending on this passed on to the dataProvider of 
             * the dataGrid, allowing to hide certain values, without deleting them. **/ 
            public function set filteredDataProvider(ARRAY:Array):void
            {
                _selectedItem = dataGrid.selectedItem;
                if(ARRAY == null)
                {
                    return;
                }
                
                _filteredDataProvider = new Array();
                for each(var ELEMENT:Object in _dataProvider)
                {
                    if(!ELEMENT["hide"] || !(ELEMENT.hasOwnProperty("hide")))
                    {
                        this._filteredDataProvider.push(ELEMENT);
                    }
                }
                
                dataGrid.dataProvider = _filteredDataProvider;
                
                // restore selected item
                dataGrid.selectedItem = _selectedItem;
            }
            public function get filteredDataProvider():Array
            {
                return _filteredDataProvider;
            }
            
            private var _dataProvider:Array = new Array();
            public function set dataProvider(ARRAY:Array):void
            {
                _dataProvider = ARRAY;
            }
            public function get dataProvider():Array
            {
                return _dataProvider;
            }
        ]]>
    </fx:Script>
</s:Group>