Log In  
 
  Getting Started  
----------------------------------------

Resources

 

DataGrid

Note: The current release is Flex 4. This page is for Flex 3. To get started with Flex 4 and Flash Builder 4 (formerly known as Flex Builder), see the Getting Started page on the Flex Developer Center.

A DataGrid is a formatted table whose items can be edited and displayed via custom renderers. Features include:

  • Resizeable columns
  • Customizable columns and row headers
  • Editable
  • Multiple modes of selection
  • Use of custom item renderer
  • Paging of data
  • Drag and drop capability
previous page next page
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    backgroundColor="#FFFFFF"
    backgroundAlpha="0"
    horizontalAlign="left"
    verticalGap="15"
    horizontalGap="15">

    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            import mx.controls.Alert;

            [Bindable]
            private var photoFeed:ArrayCollection;

            private function requestPhotos():void {
                var params:Object = new Object();
                params.format = 'rss_200_enc';
                params.tags = searchTerms.text;
                photoService.send(params);
            }

            private function photoHandler(event:ResultEvent):void {
                photoFeed= event.result.rss.channel.item as ArrayCollection;
                datagrid_id.dataProvider = photoFeed;
                datagrid_id.visible = true;
            }

            private function faultHandler(event:FaultEvent):void{
                Alert.show(event.fault.faultCode + " , " + event.fault.faultString);
            }

            private function showPopup(event:Event):void{
                theImage.source = photoFeed.getItemAt(event.currentTarget.selectedIndex).content.url
                desc.text = photoFeed.getItemAt(event.currentTarget.selectedIndex).title.getItemAt(0)
                popup.visible = true;
            }

            private function hidePopup():void{
                popup.visible = false;
                popup.includeInLayout = false;
            }
        ]]>
    </mx:Script>


    <mx:HTTPService id="photoService"
        url="http://api.flickr.com/services/feeds/photos_public.gne"
        result="photoHandler(event)"
        fault="faultHandler(event)" />

    <mx:HBox>
        <mx:Label text="Enter Search Terms"/>
        <mx:TextInput id="searchTerms" enter="requestPhotos()" />
        <mx:Button label="Search"
            click="requestPhotos()" />
    </mx:HBox>

    <mx:HBox>
        <mx:DataGrid id="datagrid_id"
            visible="false"
            itemClick="showPopup(event)">
            <mx:columns>
                <mx:DataGridColumn  dataField="title" headerText="Title" width="100" >
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:Label text="{data.title.getItemAt(0)}" textAlign="center"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn dataField="credit" headerText="Author" width="100" />
                <mx:DataGridColumn dataField="thumbnail" headerText="Photo" width="100">
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Image height="75"
                                horizontalAlign="center"
                                source="{data.thumbnail.url}"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>

        <mx:Panel id="popup"
            visible="false"
            click="hidePopup()"
            paddingLeft="10" paddingTop="10" paddingRight="10"
            layout="horizontal">
            <mx:VBox width="325" height="400">
                <mx:Label id="desc"/>
                <mx:Image id="theImage"/>
            </mx:VBox>
        </mx:Panel>
    </mx:HBox>
</mx:Application>

Rendered Example

previous page next page

i found a problem with this app.

When u search for something, the results show up. and then u click  on one of the items in the grid, the popup of the image comes to the right. But if the image is big, then scrolling bars appear. thats ok. but the problem lies in using the scroll bars, as the code is designed such tat when the popup is cliked, the popup shud hide itself, but even using the scrollbar is considered as click and the popup hides.

So how do we make only the click on the image to be considered and not the click on the scrollbars??

--

http://www.ChandruBS.co.nr

 chandrasekar

I think one option is to use canvas instead of panel component.

deepak

Comment: Posted by deepak kumar at Aug 01, 2009 04:12

The scroll bars is belong to VBox, so we can add a click event handler "cancelBubbles" to VBox. Then we can stop the event propagation.

        <mx:Panel id="popup" visible="false"
            paddingLeft="10" paddingTop="10" paddingRight="10" layout="horizontal"
            click="hidePopup(event)">
            <mx:VBox width="325" height="400" click="cancelBubbles(event)">
                <mx:Label id="desc"/>
                <mx:Image id="theImage"/>
            </mx:VBox>
        </mx:Panel>
               
    <mx:Script>
        <![CDATA[

            private function cancelBubbles(event:Event):void
            [
             event.stopPropagation();
            }

        ]]>
    </mx:Script>

Comment: Posted by 兆彬 吴 at Aug 02, 2009 20:23
Added by Mark Nichoson, last edited by Randy Nielsen on Feb 23, 2011  (view change)

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.