1000を超えるデータセットで満たされたグリッドがあります。1つの列は、外部キーの値を表示するために使用されるカスタムitemRendererを使用します。
スクロールせずに表示されるすべてのデータセットは、正しい情報で表示されます。ただし、スクロールに関しては、一部のデータセットがitemRendererに間違った値を表示します。私が理解している限り、これはitemRenderersの再利用によるものです。
しかし、再利用することは素晴らしいかもしれませんが、間違った情報を表示することは結果にはなり得ません。では、どうすればこの問題を取り除くことができますか?
編集:私はこの問題をなんとか取り除くことができましたが、とにかく私の計画を示すためにいくつかのコードを投稿します:
<?xml version="1.0" encoding="utf-8"?>
<mx:Script>
<![CDATA[
private var dataAccess : DataAccess = DataAccess.getInstance();
private var foreign : ArrayCollection = new ArrayCollection();
private function onCreationComplete() : void
{
dataAccess.service.getForeignDatasets.addEventListener("result", onGetForeignDatasets);
dataAccess.service.getForeignDatasets();
}
private function onGetForeignDatasets(event : ResultEvent) : void
{
foreign = event.result as ArrayCollection;
preSelect();
}
//gets the entry from the foreign entity which matches
//the foreign key in this.data
private function preSelect() : void
{
for each(var obj : Object in foreign)
{
if(obj.id == data.foreignKey))
{
value.text = obj.name;
return;
}
}
value.text = "";
}
private function onDataChange() : void
{
preSelect();
}
]]>
</mx:Script>
不要なコードはすべて残しました...
上記のコードは機能し、間違ったデータを表示する問題を解決します。
この機能を実装する他のアイデアはありますか?