Sorry for the gravity of the accusation - I could be entirely wrong and hopefully this post will flesh out the truth. I'm not sure if what I've found is a clue in the answer to getting this measurement accurately or simply normal and needed functionality of the DataGrid I just don't understand.
Scenario - 2 DataGrids that have drag/drop turned on where users move items between the two at random. Items are currently identical in height in both DataGrids. I've tried DataGrid.measureHeightOfItems() - relatively accurate but returned value is random and quirky in relation to what's visually there. I've tried various functions people have kindly written and posted using variations on the measureHeightOfItems() theme, thank you all. I've learned about the viewMetrics object that should be taken into account. In my case the bottom and top values were both 1 - wasn't the missing item, but rolled it in the calculations for future use. None of those have been giving me accurate math for dynamic height assignment to an ever changing DataGrid.dataProvider. What I've resorted through is picking apart the DataGrid object and tracing out what children actually are there and have found something very very odd. I dug into the Datagrid like so: DataGrid.getChildAt(2); gave me: categoryContainer.questionList.ListBaseContentHolderXXX Inside there I find my Label objects that contain my text and thus a visual representation of the dataProvider (mostly)? Sure seems like it. When moving Items to/from the DataGrid and reordering I found something peculiar - the old items were plucked (correctly) off the dataProvider, but were still in the DataGrid with a visibility of false and an includeInLayout of true and register's a height measurement. If my DataGrid.dataProvider.length were say 3 - I should have 3 items in the DataGrid. However, I'd find an extra one or two max that weren't supposed to be there - thus 4 or 5. A few times I noticed a random bug of an empty datagrid item randomly show up as a byproduct of drag/drops in and out. I'm guessing it has something to do with this. I'm not handling the data swaps from DataGrid to DataGrid - flex's built in drag/drop class is - so I'm pretty sure I don't have AScript passing a random empty exception in. Sure seems like this is the culprit, but I could be wrong. I tried turning off the includeInLayout of these freeloaders - to no avail. What gave me an initial (but later fleeting) score was to call removeChild() on them. I have two instances of these containers of which I drag items to/from and after a few drag/drops the math falls apart again.

