The following example shows you how you can truncate a DataGrid column’s text and display a tool tip by setting a custom header renderer.

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/02/08/displaying-tool-tips-in-a-flex-datagrid-controls-header/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:XML id="xmlDP">
        <nodes>
            <node col1="One.1" col2="One.2" />
            <node col1="Two.1" col2="Two.2" />
            <node col1="Three.1" col2="Three.2" />
            <node col1="Four.1" col2="Four.2" />
            <node col1="Five.1" col2="Five.2" />
            <node col1="Six.1" col2="Six.2" />
            <node col1="Seven.1" col2="Seven.2" />
            <node col1="Eight.1" col2="Eight.2" />
            <node col1="Nine.1" col2="Nine.2" />
        </nodes>
    </mx:XML>

    <mx:DataGrid id="dataGrid"
            dataProvider="{xmlDP.node}"
            width="300"
            height="200">
        <mx:columns>
            <mx:DataGridColumn dataField="@col1"
                    headerText="The quick brown fox jumped over the lazy dog"
                    headerRenderer="mx.controls.Label" />
            <mx:DataGridColumn dataField="@col2"
                    headerText="Lorem ipsum dolor sit amet, consectetuer adipiscing elit"
                    headerRenderer="mx.controls.Label" />
        </mx:columns>
    </mx:DataGrid>

</mx:Application>

View source is enabled in the following example.

Due to popular demand, here is the “same” example in a more ActionScript friendly format:

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/02/08/displaying-tool-tips-in-a-flex-datagrid-controls-header/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        initialize="init();">

    <mx:Script>
        <![CDATA[
            import mx.controls.dataGridClasses.DataGridColumn;
            import mx.controls.DataGrid;
            import mx.controls.Label;

            private var xmlDP:XML = <nodes>
                        <node col1="One.1" col2="One.2" />
                        <node col1="Two.1" col2="Two.2" />
                        <node col1="Three.1" col2="Three.2" />
                        <node col1="Four.1" col2="Four.2" />
                        <node col1="Five.1" col2="Five.2" />
                        <node col1="Six.1" col2="Six.2" />
                        <node col1="Seven.1" col2="Seven.2" />
                        <node col1="Eight.1" col2="Eight.2" />
                        <node col1="Nine.1" col2="Nine.2" />
                    </nodes>;

            private var dataGrid:DataGrid;
            private var dataGridCol1:DataGridColumn;
            private var dataGridCol2:DataGridColumn;

            private function init():void {
                dataGridCol1 = new DataGridColumn();
                dataGridCol1.dataField = "@col1";
                dataGridCol1.headerText = "The quick brown fox jumped over the lazy dog";
                dataGridCol1.headerRenderer = new ClassFactory(Label);

                dataGridCol2 = new DataGridColumn();
                dataGridCol2.dataField = "@col2";
                dataGridCol2.headerText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit";
                dataGridCol2.headerRenderer = new ClassFactory(Label);

                dataGrid = new DataGrid();
                dataGrid.dataProvider = xmlDP.node;
                dataGrid.columns = [dataGridCol1, dataGridCol2];
                dataGrid.width = 300;
                dataGrid.height = 200;
                addChild(dataGrid);
            }
        ]]>
    </mx:Script>

</mx:Application>
 
Tagged with:
 
About The Author

Peter deHaan

Peter deHaan currently works for Adobe on the Flex SDK QA team. While not working on Flex, Flash, and ColdFusion applications, Peter enjoys making up bios and writing in 3rd person. Peter's rarely updated blog can be found at blogs.adobe.com/pdehaan/, actionscriptexamples.com, airexamples.com, and coldfusionexamples.com.

11 Responses to Displaying tool tips in a Flex DataGrid control’s header

  1. barry.b says:

    simple but effective – great tip. thanks.

  2. Joel Marks says:

    Is there any way that you can use the headerrenderer to make the column headers angled?

    Thanks

  3. Ambika says:

    How do I achieve the same in actionscript? I am building my datagrid dynamically. Thanks

  4. peterd says:

    Ambika,

    Something like this should work (I’ll also update the entry above and add this new example):

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
            layout="vertical"
            verticalAlign="middle"
            backgroundColor="white"
            initialize="init();">
    
        <mx:Script>
            <![CDATA[
                import mx.controls.dataGridClasses.DataGridColumn;
                import mx.controls.DataGrid;
                import mx.controls.Label;
    
                private var xmlDP:XML = <nodes>
                            <node col1="One.1" col2="One.2" />
                            <node col1="Two.1" col2="Two.2" />
                            <node col1="Three.1" col2="Three.2" />
                            <node col1="Four.1" col2="Four.2" />
                            <node col1="Five.1" col2="Five.2" />
                            <node col1="Six.1" col2="Six.2" />
                            <node col1="Seven.1" col2="Seven.2" />
                            <node col1="Eight.1" col2="Eight.2" />
                            <node col1="Nine.1" col2="Nine.2" />
                        </nodes>;
    
                private var dataGrid:DataGrid;
                private var dataGridCol1:DataGridColumn;
                private var dataGridCol2:DataGridColumn;
    
                private function init():void {
                    dataGridCol1 = new DataGridColumn();
                    dataGridCol1.dataField = "@col1";
                    dataGridCol1.headerText = "The quick brown fox jumped over the lazy dog";
                    dataGridCol1.headerRenderer = new ClassFactory(Label);
    
                    dataGridCol2 = new DataGridColumn();
                    dataGridCol2.dataField = "@col2";
                    dataGridCol2.headerText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit";
                    dataGridCol2.headerRenderer = new ClassFactory(Label);
    
                    dataGrid = new DataGrid();
                    dataGrid.dataProvider = xmlDP.node;
                    dataGrid.columns = [dataGridCol1, dataGridCol2];
                    dataGrid.width = 300;
                    dataGrid.height = 200;
                    addChild(dataGrid);
                }
            ]]>
        </mx:Script>
    
    </mx:Application>
    

    Peter

  5. Matt says:

    I’d like to be able to force the tool-top regardless of overflow, any ideas?

  6. Geetha Narayan says:

    Hi,

    You have a great site. I have started to work on flex just 2 months ago and your site was of great help for me. I have one question, is there a way that i can resize my datagrid columns according to the hearder length?

    Thanks,
    Geetha

  7. Rashmi says:

    Hi,
    Is it possible to display tooltip different than headerText? I need to do that in one of the pages.

    Thanks,
    Rashmi

  8. ilya says:

    Just one small note: this will prevent sort arrows from being displayed automaticaly – at least in advanced datagrid

  9. shmk says:

    Setting headerRenderer=”mx.controls.Label” it works perfectly for the tooltip but the alignment of the title is fixed to top-left.
    Is it possible to change this alignment?

  10. mario says:

    perfect and simple – thx a lot!

  11. Ivan says:

    How to do it for spark datagrid cells?

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Anti-Spam Protection by WP-SpamFree