按百分比设置Flex DataGrid的列宽

在网上查找了一些资料,有个方法是直接在DataGridColumn上设置width为小数,加起来必须等1,可是不起作用,不知道是什么原因,我用的是flex3

后来又找了一个方法,可以了,mark一下

//设置dataGrid表格的列宽
private function setColumnWidth():void{
	var widthList:Array = [0.25,0.25,0.25,0.25];
	dataGrid.validateNow();
	var value:Number,display:DataGridColumn,i:int;
	var list:Array = dataGrid.columns;
	var length:int = list.length;
	var dataWidth:int = 0;
	//计算总列宽
	for(i = 0; i < length; i ++){
		display = list[i];
		dataWidth += display.width;
	}
	//大于1,视为像素,按像素设置列宽,并从总列宽中减去;
	for(i = 0; i < length; i ++){
		display = list[i];
		value = widthList[i];
		if(value > 1){
			dataWidth -= value;
			display.width = int(value);
		}
	}
	//小于1,视为百分比,按百分比设置列宽
	for(i = 0; i < length; i ++){
		display = list[i];
		value = widthList[i];
		if(value <= 1) display.width = int(dataWidth * value);
	}
}


你可能感兴趣的:(list,datagrid,function,Flex)