选择flex数据网格中的列

时间:2009-09-30 18:59:18

标签: flex datagrid

在flex数据网格中,默认情况下单击列标题会进行排序。我想要它,如果用户单击列标题,则选择整个列。我让datagrid侦听HEADER_RELEASE事件,所以我知道单击列标题的时间。

如何突出显示列和标题,类似于选中时突出显示行的方式?

2 个答案:

答案 0 :(得分:2)

您可以通过设置所选列的backgroundColor来执行此操作:

<?xml version="1.0" encoding="utf-8"?>

<mx:Script>
    <![CDATA[

        import mx.collections.ArrayCollection;
        import mx.events.DataGridEvent;


        [Bindable]
        public var mydata:ArrayCollection;


        public function init():void
        {                               
            mydata = new ArrayCollection();
            mydata.addItem( { a:"John", b:"Smith" } );
            mydata.addItem( { a:"Jane", b:"Doe" } );

            grid1.addEventListener(DataGridEvent.HEADER_RELEASE, selectColumn);
        }

        public function selectColumn(event:DataGridEvent):void
        {               
            var selectedColumn:DataGridColumn = grid1.columns[event.columnIndex];
            selectedColumn.setStyle("backgroundColor", "0x7FCEFF");
            event.stopImmediatePropagation();                           
        }
    ]]>

</mx:Script>

<mx:DataGrid    id="grid1" editable="true" dataProvider="{mydata}" >
    <mx:columns>
            <mx:DataGridColumn dataField="a"  headerText="A"  />
            <mx:DataGridColumn dataField="b" headerText="B"  />     
    </mx:columns>       
</mx:DataGrid>

答案 1 :(得分:0)

我在我的网站Here上有一个关于如何做到这一点的演示(有源代码)。基本上,您检查DataGrid排序是否与项呈示器中的列名相同,如果是,则绘制彩色背景。

希望这有帮助。

卡斯帕