- 浏览: 640187 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ssxszt:
...
解决PopUpManager弹出窗口RangeError: Error #2006: 提供的索引超出范围 -
lijiajia:
木子佳 写道楼主,想要源码学习,谢谢。kajiamuzi@16 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
juedi:
很好,是我需要的东东
Flex异常处理设计 -
暖暖fh:
大神,我想要源码,这个功能我折腾了好我啊 fuhan247@1 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
chenzi:
一样的代码,两台机器上面,完全不同的报错。。Flex实现htt ...
Flex使用Https协议
DataGrid的column的width属性不接受百分比,只接受一个具体的像素值。但是可以设置为一个小数,所有列的小数值的和必须为1,其实还是可以设置百分比的。如果你resize 大小之后有时你会发现列的大小会发生细微的变化。因此这种方法设置列还是不精确的。
导致这种原因是DataGrid在处理horizontalScrollPolicy写的不够严密造成的。
我们可以大概看下mx中DataGrid的resize事件是怎么写的。
override mx_internal function resizeColumn(col:int, w:Number):void { // there's a window of time before we calccolumnsizes // that someone can set width in AS if ((!visibleColumns || visibleColumns.length == 0) && (!visibleLockedColumns || visibleLockedColumns.length == 0)) { _columns[col].setWidth(w); _columns[col].preferredWidth = w; return; } if (w < _columns[col].minWidth) w = _columns[col].minWidth; // hScrollBar is present if (_horizontalScrollPolicy == ScrollPolicy.ON || _horizontalScrollPolicy == ScrollPolicy.AUTO) { // adjust the column's width _columns[col].setWidth(w); _columns[col].explicitWidth = w; _columns[col].preferredWidth = w; columnsInvalid = true; } else { // find the columns in the set of visible columns; var n:int = _columns.length; var i:int; for (i = 0; i < n; i++) { if (col == _columns[i].colNum) break; } if (i >= _columns.length - 1) // no resize of right most column return; col = i; // we want all cols's new widths to the right of this to be in proportion // to what they were before the stretch. // get the original space to the right not taken up by the column var totalSpace:Number = 0; var lastColumn:DataGridColumn; var newWidth:Number; //non-resizable columns don't count though for (i = col + 1; i < n; i++) { if (_columns[i].visible) if (_columns[i].resizable) totalSpace += _columns[i].width; } var newTotalSpace:Number = _columns[col].width - w + totalSpace; if (totalSpace) { _columns[col].setWidth(w); _columns[col].explicitWidth = w; } var totX:Number = 0; // resize the columns to the right proportionally to what they were for (i = col + 1; i < n; i++) { if (_columns[i].visible) if (_columns[i].resizable) { newWidth = Math.floor(_columns[i].width * newTotalSpace / totalSpace); if (newWidth < _columns[i].minWidth) newWidth = _columns[i].minWidth; _columns[i].setWidth(newWidth); totX += _columns[i].width; lastColumn = _columns[i]; } } if (totX > newTotalSpace) { // if excess then should be taken out only from changing column // cause others would have already gone to their minimum newWidth = _columns[col].width - totX + newTotalSpace; if (newWidth < _columns[col].minWidth) newWidth = _columns[col].minWidth; _columns[col].setWidth(newWidth); } else if (lastColumn) { // if less then should be added in last column // dont need to check for minWidth as we are adding lastColumn.setWidth(lastColumn.width - totX + newTotalSpace); } } itemsSizeChanged = true invalidateDisplayList(); }
注意上面红色字体的代码,你会发现如果horizontalScrollPolicy为off的时候,flex处理column宽度的时候是按照一种比例来计算的,并不是期待的那种方式。
最后一列的宽度是表格的宽度减去前面所有列的宽度。而前面列是按照Math.floor取得百分比的值,这肯定就会产生一些差值。
知道原因后,我们就可以知道如何解决这个问题了。
方法一:重写resizeColumn
方法二:监听DataGrid的resize事件,在resize事件中重新的设置cloumn的width。你可以按照第一次创建column宽度的算法重写设置。另外,如果你想写的完美的话,你可以同时支持固定值和百分比。
发表评论
-
图片背景使用九宫格
2012-07-24 10:20 0[Embed(source="../ass ... -
Flex弹出窗口做为Module
2012-07-23 18:00 0今天才知道原来TitleWindow也可以单独编译 ... -
Repeater使用简介
2012-05-09 19:26 1599mx组件中的Repeater类似与sprak中的Da ... -
Flex失效机制
2012-02-29 17:19 2969一、什么是失效机 ... -
Image倒影效果
2012-02-20 10:11 1675利用spark的BitmapImage实现倒影效果 ... -
Flex设置z轴的index
2012-02-13 14:58 4737flex4的UIComponent新增了dept ... -
得到一个字符的Unicode编码
2012-02-09 12:59 1961ActionScript 3.0String类中函数charC ... -
解决PopupManager.createPopup报错:状态“inactive”未定义
2012-02-04 21:27 2194出现这种的场景是在Module中使用弹出窗口Pop ... -
用chrome浏览器调试flex程序
2012-02-04 18:55 6876开发flex程序难免需要debug,但是IE8浏 ... -
Flash Player11不能输入中文,请谨慎升级
2011-12-18 01:04 2641很多时候,Flash的程序需要集成到其他系统中 ... -
优化Flash Builder
2011-12-18 00:54 2629Flash Builder4中新增了一个ASDO ... -
RollOver和MouseOver的不同
2011-12-12 15:03 3000共同点:都是针对鼠标的进入和进出事件。 ... -
转 Adobe移动战略失败的幕后
2011-12-08 15:56 1327最近一段时间,Adobe和Apple两个昔日的好伙 ... -
Flash Builder该这样编译,希望adboe的人能看到
2011-12-06 12:17 0从3.0开始使用flash builder,对f ... -
List或DataGrid可变行高
2011-11-29 21:57 3122默认情况下List组件是每行的行高是固定的,但 ... -
访问flex sdk版本和Flash player版本
2011-11-16 15:52 1325下面的代码将flex sdk的版本号和Fla ... -
设置TitleWindow的closeButton的mode
2011-11-16 15:42 1174默认情况下,TitleWindow的closeBu ... -
DataGrid header显示tooltip
2011-11-15 17:18 2500有时需要在DataGrid的header上显示 ... -
flash右键菜单项关键字
2011-11-15 16:26 1198有时需要在flash的右键菜单中添加 删除 ... -
设置spark的rowCount
2011-11-15 08:48 1807在mx的列表组件中,可以通过设置rowCount, ...
相关推荐
C# Wince中设置DataGrid的Cell的格式、颜色 可以根据条件任意设置Cell的颜色边框等,甚至可以重画, 并且也有DataGrid动态绑定的功能,值得拥有。
如何改变Flex中DataGrid某一DataGridColumn显示内容的字体颜色
用得多了,发觉自己了解的真的是九牛之一毛都没有,最近用到了从后台读出数据时显示的问题,相信很多人都有用整形数据来代替字符串数据的情况
datagrid设行背景色示例,提供了继承好的datagrid子类,
WinCE下设置DataGrid的栏位宽度,亲测可以
wpf中datagrid动态设置单元格背景颜色。
easyUI datagrid 自动调整行号大小
WPF下DataGrid每行设置不同的ComboBox的数据绑定 DataGrid设置一次ItemSource 每个ComboBox也要设置一次ItemSource 有点像通过两次映射来绑定
自定义DataGrid的列标题样式,行样式,鼠标悬浮及选择样式。 自定义滚动条样式,包括箭头及滚动区。
本文给大家分享jQuery EasyUI编辑DataGrid用combobox实现多级联动效果的实例代码,代码简单易懂,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
在DataGrid控件中设置单元格的数据显示格式.
主要介绍了jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法,较为详细的描述了出现的问题、问题的原因及相应的解决方法,需要的朋友可以参考下
jeasyui-datagrid-datagrid 开发参考
Windows mobile cf DataGrid列宽设置源码
var dataGridColumn:... dataGridColumn.width=150; dataGridColumn.editable=false; var arrays:Array = new Array(); arrays= dataGrid.columns; arrays.push(dataGridColumn); dataGrid.columns = arrays;
主要介绍了jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法,涉及jQuery插件EasyUI相关属性设置技巧,需要的朋友可以参考下
DataGrid中嵌套DataGrid,修改后也适用DataGrid中嵌套DataList,DataList中嵌套DataList
System.Windows.Controls.DataGrid DataGrid = dataGrid1; string file = "C:Users\\Administrator\\Desktop\\qb"; Export(DataGrid, file); } public static void Export(System.Windows.Controls.DataGrid...
给DataGrid添加自定义的headerRenderer,实现在Header上自己添加想要的界面功能
DataGrid自定义列标题 DataGrid自定义列标题 DataGrid自定义列标题 DataGrid自定义列标题 DataGrid自定义列标题