Есть способ.вам нужно расширить класс DataGrid и добавить свойство String uniqueIdField.
Установить для поля uniqueIdField свойство уникальных объектов в наборе данных.
, а затем переопределить метод set dataProviderкак показано ниже: это будет работать, если столбцы не отсортированы.ИСПРАВЛЕНО * У меня теперь проблема в том, что при сортировке столбца отображаются правильные выделения строк, но полоса прокрутки не соответствует значению (поскольку одно из его свойств, влияющих на сортировку, изменилось). *
Приведенный ниже код устанавливает полосу прокрутки в правильное положение.
переопределить набор открытых функций dataProvider (значение: Object): void {var vScroll: int = 0;// проверяем, выбираем ли мы предыдущий выбранный элемент // и сохраняем текущее положение if (uniqueIdField.length> 0 && selectedItem! = null) {uniqueIdData = this.selectedItem [uniqueIdField];vScroll = this.verticalScrollPosition;}
super.dataProvider = value;
if(uniqueIdField.length > 0
&& uniqueIdData != null
&& selectedItems.length <= 1)
{
var currentObj: Object;var found: Boolean = false;
if(dataProvider is ArrayCollection)
{
//find object in dataprovider
for(var i:int=0; i < dataProvider.length; i++)
{
currentObj = dataProvider.getItemAt(i);
if(currentObj[uniqueIdField] == uniqueIdData)
{
this.selectedItem = currentObj;
found = true;
vScroll = this.selectedIndex;
break;
}
}
if(!found)
{
this.selectedItem = null;
uniqueIdData = null;
}
}
// уведомить, что элемент был выбран, найден или обнулен this.verticalScrollPosition = vScroll;dispatchEvent (новый ListEvent (ListEvent.CHANGE));
}