Flex 3 DataGrid 列宽问题
-
19-09-2019 - |
题
我正在提取 xml 数据来确定哪些列可见,以及每列的宽度。我的数据网格的宽度可以改变,因为它位于 HDividedBox 的一侧。可见性部分有效,但设置宽度会引起头痛。代码如下:
for(loop through column data retrieve from XML)
{
newData[i] = dg.columns[Number(columnsOrder[i]) - 1];
newData[i].visible = (Number(columnsVisibility[i]) == 1);
newData[i].width = Number(columnsWidth[i]);
trace(newData[i].headerText + " w:" + newData[i].width.toString() + " v:" + newData[i].visible.toString());
}
dg.columns = newData;
dg.invalidateList();
在跟踪中,前两项的宽度是正确的,但是,对于连续的一项,其显示为“20”......
Date w:240 v:true
Title w:184 v:true
Requestor w:20 v:true
Approved By w:20 v:true
Category w:20 v:false
Status w:20 v:false
Priority w:20 v:false
当我输出 Number(columnsWidth[i]) 时,它显示为正确的值,因此宽度分配中发生了奇怪的情况。
已经看了几个小时了,并尝试了多种方法来尝试修复它,但无济于事。
解决方案
我的数据网格的宽度可以sinces其上的HDividedBox的一侧变化。
这就是问题就在这里。
我使用Flex 2和Flex 3的DataGridColumn宽度的所面临的相同问题每当DataGrid的宽度不是固定的。我唯一的解决办法是固定数据网格或切换到AdvancedDataGrid或其他类似部件的宽度。
其他提示
我已经做了在AdvancedDataGrid同样的事情,它的工作原理。 通过设置这些值尝试
horizontalScrollPolicy="on"
width="100%
然后添加你这个应该工作列与HDividedBox类。
你可以完成这个,我认为这是 DataGrid 本身的一个错误。
如果在 DataGrid 上设置 minWidth="0" 和horizontalScrollPolicy="{ScrollPolicy.AUTO}",则可以创建具有固定宽度的 DataGridColumn 对象并正确遵守它。
但是,最后一列似乎仍然存在问题,当 DataGrid 仍然大于所有固定宽度的总和时,它将拉伸最终的 DataGridColumn。
您可以通过在末尾添加一个没有标题文本等的空白列来解决这个问题。
确定 - 我们同时建立关于各种列宽模式支持运行到此我们自己。的信息只是一个小趣闻 - 如果你要明确设置宽度,确保你做这样的事情:
var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;