2009-05-26 55 views
0

我有一个数据网格,它的大小取决于调用我的数据库的结果。对数据库的调用返回每行有30+个值的对象。当返回的行数超过80-90时,datagrid呈现奇数。它显示前50-60行罚款,但它然后显示空白行,他们甚至继续显示在数据网格的边界之外。flex datagrid在检索数据时冻结

任何人有任何想法发生了什么?我使用mxml webservice来检索数据。

<mx:DataGrid dataProvider="{resultsData}" rowCount="{resultsData.length}" allowDragSelection="false" 
    id = "confRoomLookupResults" width="948" 
    variableRowHeight="true" draggableColumns="false" wordWrap="true" resizableColumns="false" 
    borderColor="#E0E3E5" borderStyle="inset" x="10" top="35" 

回答

1

Flash影片尺寸限制为2880px(http://kb2.adobe.com/cps/144/tn_14437.html)。也许你的数据网格超出了这些限制,并导致渲染错误。是否有任何异常被抛出?

无论如何,我会用JustFoo的建议去使用滚动条。这是有道理的,因为闪光灯只需渲染可见的内容,这对客户来说将是一个巨大的性能提升。

2

是否有一个特定的原因,您希望将行计数设置为返回数据的长度?

如果您只是尝试将数据网格的高度设置为100%,则会使用数据网格填充可视区域,并且任何行的溢出都会导致出现垂直滚动条。

希望这会有所帮助。

+0

我有rowCount集合的原因是因为我希望网格每次返回结果数时动态分组。 – cduggan 2009-05-27 08:00:17

0

听起来有两个问题:

1)根据rowCount是超出显示器是数据网格的可视区域的。

2)看来你使用的是阵列不是自定义对象,以便更改到阵列,如长度并不会明显......

从Adobe网站: http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_2.html

如果使用原始数据对象(如数组)作为控件的数据提供者,Flex会自动将该对象封装在集合包装中。控件不会自动检测直接对原始对象进行的更改。例如,数组长度的改变不会导致控件的更新。但是,您可以使用对象代理,侦听器接口或itemUpdated属性来通知视图中的某些更改。