2009-05-26 13 views
0

Ich habe ein Datagrid, das in der Größe abhängig von dem Ergebnis eines Aufrufs meiner DB wächst. Der Aufruf an die Datenbank gibt ein Objekt mit mehr als 30 Werten für jede Zeile zurück. Wenn die Anzahl der zurückgegebenen Zeilen 80-90 überschreitet, wird das Datagrid ungerade wiedergegeben. Es zeigt die ersten 50-60 Zeilen an, aber dann zeigt es leere Zeilen an und sie werden sogar außerhalb des Rahmens des Datagrids angezeigt.flex Datagrid friert beim Abrufen von Daten ein

jemand irgendwelche ideen was passiert? Ich verwende mxml webservice, um die Daten abzurufen.

<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" 

Antwort

1

Es gibt eine Grenze von 2880 Pixel für die Dimension eines Flash-Films (http://kb2.adobe.com/cps/144/tn_14437.html). Möglicherweise überschreitet Ihr Datenraster diese Grenzwerte und verursacht den Renderfehler. Gibt es Ausnahmen?

In jedem Fall würde ich mit JustFoo Vorschlag gehen und nur die Bildlaufleiste verwenden. Es macht Sinn, da Flash nur das wiedergeben muss, was sichtbar ist, was für den Client eine große Leistungssteigerung bedeutet.

2

Gibt es einen bestimmten Grund, warum Sie die Zeilenanzahl als die Länge der zurückgegebenen Daten festlegen möchten?

Wenn Sie nur versuchen, die Höhe des Datagrids auf 100% zu setzen, füllt dies den sichtbaren Bereich mit dem Datagrid und jeder Überlauf von Zeilen führt dazu, dass eine vertikale Bildlaufleiste angezeigt wird.

Hoffe, das hilft.

+0

Der Grund, warum ich den Satz rowCount gesetzt habe, ist, weil ich möchte, dass das Gitter jedes Mal, wenn die Anzahl der Ergebnisse zurückgegeben wird, dynamisch gruppiert wird. – cduggan

0

Klingt wie es zwei Probleme:

1) die rowCount über das Display sind der sichtbaren Bereich des Datagrid.

2) Es scheint, dass Sie ein Array nicht ein benutzerdefiniertes Objekt verwenden, um die Änderungen an die Array, wie Länge nicht offensichtlich sein werden ...

Von der Adobe-Website: http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_2.html

Wenn Sie ein Rohdatenobjekt, z. B. ein Array, als Datenprovider eines Steuerelements verwenden, wird das Objekt von Flex automatisch in einen Auflistungswrapper eingeschlossen. Das Steuerelement erkennt Änderungen, die direkt an das unbearbeitete Objekt vorgenommen werden, nicht automatisch. Eine Änderung der Länge eines Arrays führt beispielsweise nicht zu einer Aktualisierung des Steuerelements. Sie können jedoch einen Objektproxy, eine Listener-Schnittstelle oder die itemUpdated-Eigenschaft verwenden, um die Ansicht bestimmter Änderungen zu benachrichtigen.