So, I'm finding that this is really a nasty bug, and I haven't found a
good work-around.

I've tried searching through the DataGrid.columnMap to ensure there's
renderers for my column before setting the width. This works until you
scroll horizontally. The columns that used to be visible, but aren't
anymore still have renderers in columnMap... and as soon as you set
the width on a non-visible column, bam... null reference error.

I've submitted a bug report on Flex 2.0.1 through the normal feedback
channel.

Still looking for some kind of work-around if anyone knows of one, I
really need something!

thanks,
PW

--- In [email protected], "parkerwhirlow" <[EMAIL PROTECTED]>
wrote:
>
> Hi,
> 
> I have an issue where I've created a special routine to calculate the
>  size of the columns in my DataGrid subclass. 
> 
> The problem I have is that I have several data grids that interact
> with eachother, and not all columns are visible (or were ever visible). 
> 
> When I programmatically set the width of the columns, if the columns
> have not been shown (are not in the 'visibleColumns' array) I get a
> null pointer error. See the stack trace below.
> 
> Since I can't get to the 'visibleColumns' collection, how can I set
> the 'desired' widths of my columns without running into this error?
> 
> Also, looking at the actual code, they tried to check for some timing
> on whether they had calc'd columns. But they don't check if the column
> you're setting the width on is in the 'visibleColumns' list. This
> seems like a relatively simple defect to fix... It should fall into
> that upper if block, and set the width on the column itself, right?
> 
> 
> thanks,
> Parker Whirlow
> __________________________
> 
> TypeError: Error #1010: A term is undefined and has no properties.
> at
>
mx.controls::DataGrid/http://www.adobe.com/2006/flex/mx/internal::resizeColumn()[C:\dev\flex_201_gmc\sdk\frameworks\mx\controls\DataGrid.as:2462]
> at mx.controls.dataGridClasses::DataGridColumn/set
>
width()[C:\dev\flex_201_gmc\sdk\frameworks\mx\controls\dataGridClasses\DataGridColumn.as:1048]
> at
>
company.visualizations::MyGrid/company.visualizations:MyGrid::setDefaultColumnWidths()[C:\work\Flex\src\company\visualizations\MyGrid.as:1720]
> 
> _________________________
> source at DataGrid:2462
> 
> // there's a window of time before we calc columnsizes
> // that someone can set width in AS
> if (!visibleColumns || visibleColumns.length == 0)
> {
>   columns[col].setWidth(w);
>   return;
> }
> 
> if (w < visibleColumns[col].minWidth)   // ERROR IS HERE
>   w = visibleColumns[col].minWidth;
>


Reply via email to