2010-11-23 3 views
1

Erstellen eines Datagrids und Datenproviders, wenn der Datenprovider 2 mit dem gleichen Wert ({"A", "A", "B"}) enthält, wenn Sie den Mauszeiger über eine der Zeilen mit "A" halten "wird auch hervorgehoben werden.Flex DataGrid/DataProvider Fehler?

Hat sonst jemand dieses Problem bemerkt?

+0

Ich habe noch nie so etwas gesehen. Wie sieht dein Code aus? – wajiw

+0

Nur ein einfaches Datenrasterobjekt, das an eine ArrayCollection gebunden ist. Fügen Sie anschließend doppelte Zeichenfolgen zur ArrayCollection hinzu. –

+1

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

Antwort

2

Whydna Sie sind auf dem richtigen Weg mit dem Beitrag, den Sie geteilt http://jonathanbranam.net/solutions/datagrid-highlights-wrong-row. Der Grund dafür ist, dass flash/flex verwirrend ist, da das Datagrid die Gleichheit verwendet, um zu bestimmen, wann eine Übereinstimmung für eine Zeile gefunden wurde. Dies könnte behoben werden, indem das Framework mit strenger Gleichheit gepatcht wird (===), aber die bessere Antwort für den Moment ist zu tun, da dieser Beitrag Ihre Werte in einem Objekt suggeriert und umschließt, so dass kein Risiko für dieses Problem besteht. Sie werden auch das gleiche Verhalten sehen, wenn Sie mehrere identische Objekte hinzugefügt haben, wie das Beispiel auf dem Link zeigt. Hier ist ein Arbeitsbeispiel, um sicherzustellen, dass Sie haben, was Sie brauchen.

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