Flex 3 DataGrid列宽问题

时间:2009-08-19 20:41:58

标签: flex datagrid column-width

我正在提取xml数据以确定哪些列可见,以及每列的宽度。我的datagrid的宽度可以改变,因为它位于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])时,它显示为正确的值,因此在宽度的赋值中发生了奇怪的事情。

现在已经看了几个小时了,并尝试了多种方法来尝试修复它无济于事。

4 个答案:

答案 0 :(得分:3)

  
    

我的数据网格的宽度可以改变,因为它位于HDividedBox的一侧。

  

那就是问题所在。

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

答案 1 :(得分:1)

我在AdvancedDataGrid中做了同样的事情并且它有效。 尝试设置这些值

  horizontalScrollPolicy="on"
  width="100%

然后添加你应该使用HDividedBox的列。

答案 2 :(得分:1)

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

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

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

你可以通过在末尾添加一个没有标题文本等的空白列来解决这个问题。

答案 3 :(得分:1)

好的 - 我们在构建对各种列宽模式的支持时遇到了这个问题。只是一点点信息 - 如果你想明确设置宽度,请确保你做这样的事情:

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