2011-02-11 1 views
0

Используя стандартный Flex DataGrid, существует ли простой способ определить индекс строки сетки, заданный объектом данных или индексом объекта данных в поставщике данных? С другой стороны, есть ли способ получить индекс объекта в поставщике данных на основе индекса строки DataGrid? Заранее спасибо!Flex DataGrid: получить объект данных из индекса строки и наоборот?

ответ

1

Предполагая, что я понимаю, что вы просите правильно и предполагается, что ваш dataProvider является ArrayCollection:

Чтобы получить индекс выбранной строки в вашем DataProvider:

var rowIndex:int = myArrayCollection.getItemIndex(myDataGrid.selectedItem); 

Чтобы получить объект в вашем dataProvider из DataGrid:

var obj:Object = myDataGrid.selectedItem; 

Поскольку DataGrid перерабатывает их itemRenderers для улучшения производительности памяти, в вашем dataProvider нет определенного индекса строки для данного объекта. Когда вы прокручиваете и записи больше не видны, эти записи itemRenderers повторно используются для новых записей, которые прокручиваются в представлении. Вы можете прочитать больше на itemRenderers и переработке here.

EDIT: Вот ссылка на пример того, как фильтровать данные в DataGrid:

http://www.flex-blog.com/arraycollection-filter-example/

+0

Является ли индекс в поставщике данных всегда будет индекс строки, хотя? Я решил, что будут встроенные параметры, такие как пейджинг или фильтрация, которые заставят сетку скрыть некоторые из строк. Возможно, это никогда не случается (я новичок в Flex, поэтому не уверен). – Ocelot20

+1

@ Ocelot20 Нет индекса в dataProvider не всегда будет индексом строки. В этом первом примере, который я разместил, вы получите индекс строки в dataProvider для выбранной строки вашего DataGrid. К сожалению, Flex DataGrid не поддерживает пейджинг, и вся фильтрация выполняется против вашего ArrayCollection с помощью filterFunctions. Я добавил ссылку на пример фильтрации в своем ответе. Надеюсь, это поможет! –