2009-08-19 79 views
2

我正在拉xml数据以确定哪些列是可见的,以及每列的宽度。我的数据网格的宽度可以改变它在HDividedBox的一侧。可见性部分工作,但设置宽度导致头痛。继承人的代码:Flex 3 DataGrid列宽问题

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])它显示为正确的值,所以在分配宽度时会发生奇怪的事情。

一直看着这几个小时,并尝试了多种尝试修复它无济于事。

回答

3

我的数据网格的宽度可以改变其在HDividedBox的一侧的味道。

这就是问题所在。

每当DataGrid的宽度不固定时,我都遇到了与Flex 2和Flex 3 DataGridColumn宽度完全相同的问题。我唯一的解决方案是修复DataGrid的宽度或切换到AdvancedDataGrid或其他类似的组件。

+0

我想,如果DataGrid的尺寸太小创建时计算列出现此错误。 一个解决方法是将宽度设置为适应所有列的宽度,例如100,然后在创建完成事件中将宽度设置为您真正想要的宽度,例如percentWidth = 100 – robmcm 2011-01-12 08:39:32

1

我已经在AdvancedDataGrid中做了同样的事情,它的工作原理。 通过设置这些值

horizontalScrollPolicy="on" 
    width="100% 

尝试,然后添加你这个应该HDividedBox类工作列。

1

你可以做到这一点,这是我认为是DataGrid本身的错误。

如果在DataGrid上设置minWidth =“0”和horizo​​ntalScrollPolicy =“{ScrollPolicy.AUTO}”,则可以创建具有固定宽度的DataGridColumn对象,并使其正确服从。

但是,似乎仍然有一个问题,最后一列,当DataGrid仍然大于所有固定宽度的总和时,它将拉伸最终的DataGridColumn。

你可以解决这个问题通过在年底没有标题文字等

1

确定加入的空白栏 - 我们同时为不同的列宽模式支持运行到这个自己。只是信息的小珍闻 - 如果你要明确设置宽度,确保你做这样的事情:

var oldPolicy:String = grid.horizontalScrollPolicy; 
grid.horizontalScrollPolicy ="on" 
//set your widths here 
grid.horizontalScrollPolicy =oldPolicy;