views:

3709

answers:

2

I'm pulling xml data to determine which columns are visible, and the widths of each column. My datagrid's width can change sinces its on one side of a HDividedBox. The visibility part works, but setting the width is causing headaches. Heres the code:

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();

In the trace the width is correct for the first two items, however, its showing up as "20" for ever consecutive one...

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

When I output Number(columnsWidth[i]) it shows up as the correct value so something weird is happening in the assignment of the width.

Been looking at this for a few hours now, and have tried multiple things to try to fix it to no avail.

A: 

My datagrid's width can change sinces its on one side of a HDividedBox.

That's the problem right there.

I faced the exact same problem with Flex 2 and Flex 3 DataGridColumn width's whenever the width for the DataGrid was not fixed. The only solution I had was to fix the width of the DataGrid or switch to AdvancedDataGrid or other similar components.

Srirangan
A: 

I have done the same thing in AdvancedDataGrid and it works. Try by setting these values

  horizontalScrollPolicy="on"
  width="100%

and then add you columns this should work with HDividedBox.

Rahul Garg