Почему вы находитесь на правильном пути с сообщением, которым вы поделились http://jonathanbranam.net/solutions/datagrid-highlights-wrong-row. Причина, по которой это сбивает с толку flash / flex, заключается в том, что сетка данных использует равенство, чтобы определить, когда найдено совпадение для строки. Это может быть исправлено путем исправления структуры для использования строгого равенства (===), но лучший ответ на данный момент - сделать так, как предлагает этот пост, и обернуть ваши значения в объект, чтобы не было риска этой проблемы. Вы также увидите такое же поведение, если добавите несколько идентичных объектов, как показано в примере по ссылке. Вот рабочий пример, чтобы убедиться, что у вас есть то, что вам нужно.
<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>