flex datagrid在检索数据时冻结

时间:2009-05-26 20:48:37

标签: flex datagrid

我有一个数据网格,它的大小会根据对我的数据库调用的结果而增长。对数据库的调用返回每行具有30+值的对象。当返回的行数超过大约80-90时,datagrid呈现奇数。它显示前50-60行,但它显示空行,甚至继续显示在数据网格的边框之外。

任何人有什么想法发生了什么?我使用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"

3 个答案:

答案 0 :(得分:2)

是否有特定原因要将行数设置为返回数据的长度?

如果你只是尝试将datagrid的高度设置为100%,这将填充带有datagrid的可视区域,任何行溢出都会导致出现垂直滚动条。

希望这有帮助。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

听起来有两个问题:

1)rowCount超出了数据网格可视区域的显示范围。

2)您似乎使用的是数组而不是自定义对象,因此对数组的更改(如长度)将不会明显...

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

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