2

我正在提取 xml 数据以确定哪些列是可见的,以及每列的宽度。我的数据网格的宽度可以改变,因为它位于 HDdivedBox 的一侧。可见性部分有效,但设置宽度会引起头痛。继承人的代码:

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

4 回答 4

3

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

这就是问题所在。

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

于 2009-08-20T03:18:20.013 回答
1

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

  horizontalScrollPolicy="on"
  width="100%

然后添加你的列,这应该与 HDdivedBox 一起使用。

于 2009-08-20T05:53:15.727 回答
1

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

如果在 DataGrid 上设置 minWidth="0" 和 Horizo​​ntalScrollPolicy="{ScrollPolicy.AUTO}",则可以创建具有固定宽度的 DataGridColumn 对象并正确遵守。

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

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

于 2010-11-11T16:13:43.603 回答
1

好的 - 我们自己在构建对各种列宽模式的支持时遇到了这个问题。只是一点点信息 - 如果您想明确设置宽度,请确保您执行以下操作:

var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;
于 2011-05-23T21:11:39.360 回答