Ей, DataGrid, давай сюда свій HeaderRenderer.

 

Оце недавно озадачився я таким, на перший погляд, досить тривіальним завданням, а саме – як отримати доступ до екземпляра HeaderRenderer’a в DataGrid’і, маючи "на руках" лише його columnIndex. Звичайно великий гугль на таке питання рідною українською чи навіть близькосхідною російською відповів мені рівно нулем посиланням, але я був впевнений, що величезне англомовне flex’ове ком’юніті спасе мою душу і гордо вбив "How to get access to instance of DataGrid’s headerRenderer through its columnIndex ". І що я Вас скажу мої дорогі – нічого толковго я так і не знайшов. Обговорюють купу всякого, але не те, що мені треба. Отже, виходячи з такої тяжкої ситуації, я вже просто не міг втриматись написати пост, враховуючи, що не писав я вже ого-го, і от власне зараз Ви його і читаєте. Не буду розводити тут силу силенну слів, а просто скажу, що без розширення класу mx.controls.DataGrid не обійшлось і рішення вийшло доволі просте й елегантне. Просто добавимо такий публічний метод до нашого підкласа:

1
2
3
4
        public function getHeaderRendererAt(index : int) : IListItemRenderer
        {
            return IListItemRenderer(DataGridHeader(header).rendererArray[index]);
        }

Менше слів – більше прикладів. Сподіваюсь це стане в нагоді хоча б комусь.

 

Всім удачі і до нових зустрічей в ефірі


About this entry