Flex DataGrid 自动设置列宽

时间:2021-05-27 16:20:46
 最近项目中用datagrid. 不爽的是列太多了, 他又不能自动设置列宽, 一个一个设置也不知道多宽为妙, 于是写了个自动设置列宽的方法, 希望用到的可以参考, 不明白的留言, 呵呵!

      欢迎加入flex群: 117376837(可获得源码)

      代码如下:

as类

  package my.tools.datagrid
  {
   import flash.text.TextLineMetrics;
   
   import mx.controls.DataGrid;
   import mx.controls.dataGridClasses.DataGridColumn;
  
   public class DataGridTools
   {
    /**
     * 自动设置datagrid的列宽
     */
    public static function setColumnsWidth(dataGrid:DataGrid):void
    {
     var gridWidth:int=0;
     for(var i:int=0;i<dataGrid.columnCount;i++)
     {
      var column:DataGridColumn=dataGrid.columns[i];
      var colWidth:int=(column.headerText.length+2)*dataGrid.getStyle("fontSize");
      column.width=colWidth;
      gridWidth+=colWidth;
     }
     dataGrid.width=gridWidth;
    }
   }
  } 

测试页面:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" horizontalScrollPolicy="on" >
 <mx:Script>
  <![CDATA[

   protected function init():void
   {
    DataGridTools.setColumnsWidth(dgrTest);
   }

  ]]>
 </mx:Script>
 <mx:DataGrid id="dgrTest" top="0" left="0" fontSize="12" initialize="init()" horizontalScrollPolicy="on">
  <mx:columns>
   <mx:DataGridColumn headerText="操" dataField=""/>
   <mx:DataGridColumn headerText="有一种苍蝇叫黄粪蝇 " dataField=""/>
   <mx:DataGridColumn headerText="每当一坨新鲜的大粪落地" dataField=""/>
   <mx:DataGridColumn headerText="它们就蜂拥而来" dataField=""/>
   <mx:DataGridColumn headerText="饱餐之后开始在粪上寻找交配对象" dataField=""/>
   <mx:DataGridColumn headerText="看对眼的就嘿咻" dataField=""/>
   <mx:DataGridColumn headerText="过程和其它苍蝇没什么两样" dataField=""/>
   <mx:DataGridColumn headerText="特别的在于" dataField=""/>
   <mx:DataGridColumn headerText="为保证母蝇最后生的是自己的种" dataField=""/>
   <mx:DataGridColumn headerText="公蝇在嘿咻完之后" dataField=""/>
   <mx:DataGridColumn headerText="会一直保持两蝇交配的体位" dataField=""/>
   <mx:DataGridColumn headerText="直到母蝇产卵" dataField=""/>
   <mx:DataGridColumn headerText="其间它用中间一对腿抱住母蝇" dataField=""/>
   <mx:DataGridColumn headerText="用其它两对腿和不断前来骚扰有着不良企图的无数公蝇战斗" dataField=""/>
   <mx:DataGridColumn headerText="这个自然现象告诉我们:" dataField=""/>
   <mx:DataGridColumn headerText="不要以为自己时间很长" dataField=""/>
   <mx:DataGridColumn headerText="你试试一直做到临产" dataField=""/>
   <mx:DataGridColumn headerText="操" dataField=""/>
  </mx:columns>
 </mx:DataGrid>
 
</mx:Application>

结果:

 Flex DataGrid 自动设置列宽

 

来自: http://hi.baidu.com/qq825129090/blog/item/088a3127c06f71258644f977.html