2010-11-23 16 views
1

データグリッドとデータプロバイダを作成する場合、データプロバイダに同じ値({"A"、 "A"、 "B"})の2が含まれている場合、 "A"を含む行のいずれかにカーソルを移動すると、 "A "も強調表示されます。Flex DataGrid/DataProviderのバグ?

他にも誰かがこの問題を認識していますか?

+0

このようなことは一度もありませんでした。あなたのコードはどうですか? – wajiw

+0

ArrayCollectionにバインドされた単なるデータグリッドオブジェクトです。次に、ArrayCollectionに重複した文字列を追加します。 –

+1

http://jonathanbranam.net/solutions/datagrid-highlights-wrong-row –

答えて

2

あなたはあなたが共有した投稿で正しい軌道に入っていますhttp://jonathanbranam.net/solutions/datagrid-highlights-wrong-row。これがflash/flexを混乱させる理由は、DataGridが等価を使って行の一致を検出したときを判断するためです。これは厳密な等価性(===)を使用するためにフレームワークにパッチを当てることで修正できますが、今のところより良い答えは、この問題のリスクがないように、投稿が提案してオブジェクトに値をラップするときに行うことです。リンクでの例のように、複数の同じオブジェクトを追加した場合も同じ動作が表示されます。ここには、必要なものがあるかどうかを確認するための実例があります。

<mx:DataGrid id="dataGrid" dataProvider="{gridData}" creationComplete="init()"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="title" headerText="Title" /> 
    </mx:columns> 
</mx:DataGrid> 

<mx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 

     [Bindable] private var gridData:ArrayCollection;  

     protected function init():void 
     { 
      gridData = new ArrayCollection(); 

      for(var i:uint = 0; i < 10; i++) 
      { 
       gridData.addItem({title: "This is an item"}); 
      } 

     } 

    ]]> 
</mx:Script>