Используя стандартный Flex DataGrid, существует ли простой способ определить индекс строки сетки, заданный объектом данных или индексом объекта данных в поставщике данных? С другой стороны, есть ли способ получить индекс объекта в поставщике данных на основе индекса строки DataGrid? Заранее спасибо!Flex DataGrid: получить объект данных из индекса строки и наоборот?
0
A
ответ
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:
Является ли индекс в поставщике данных всегда будет индекс строки, хотя? Я решил, что будут встроенные параметры, такие как пейджинг или фильтрация, которые заставят сетку скрыть некоторые из строк. Возможно, это никогда не случается (я новичок в Flex, поэтому не уверен). – Ocelot20
@ Ocelot20 Нет индекса в dataProvider не всегда будет индексом строки. В этом первом примере, который я разместил, вы получите индекс строки в dataProvider для выбранной строки вашего DataGrid. К сожалению, Flex DataGrid не поддерживает пейджинг, и вся фильтрация выполняется против вашего ArrayCollection с помощью filterFunctions. Я добавил ссылку на пример фильтрации в своем ответе. Надеюсь, это поможет! –