/ / Vnorená dátová mriežka: nastavenie zamerania na vnútornú dátovú mriežku - flex, flex3

Vnorená datagrid: nastavenie zaostrenia na vnútri datagrid - flex, flex3

Mám dátovú mriežku s vykresleným v jednom stĺpcis inou dátovou mriežkou. Robím to preto, aby som implementoval obrazovku podobnú riadku (s hboxom pod detskou dátovou mriežkou), ktorý zobrazuje správy pod každým riadkom. Keď prejdem na kartu a dostanem sa na koniec riadku, chcem zamerať prechod na ďalší riadok, t. J. Na ďalšiu podradenú dátovú mriežku a na konkrétnu bunku v tomto riadku. Toto je zjednodušený kód, ktorý volá vykresľovač:

<mx:DataGrid width="100%"
showHeaders="false"
selectable="false"
id="ParentDatagrid"
dataProvider="{arrayActs}"
paddingBottom="0" paddingTop="0"
variableRowHeight="true">
<mx:columns>
<mx:DataGridColumn itemRenderer="components.ColumnRendererDatagrid"/>
</mx:columns>
</mx:DataGrid>

A kód vykresľovača (ColumnRendererDatagrid):

<mx:DataGrid
id="dgLocal" width="100%" height="23" borderSides=""
dataProvider="{data}" showHeaders="false"
editable="true" selectable="false">
<mx:columns>
<mx:DataGridColumn />
<mx:DataGridColumn />
<mx:DataGridColumn />
<mx:DataGridColumn />
<mx:DataGridColumn />
</mx:columns>
</mx:DataGrid>
<mx:HRule width="100%" />
<mx:Label id="message" text="Error Message" width="100%" />

Momentálne používam nasledujúci úryvok v stĺpci ColumnRendererDatagrid, aby som skontroloval, kedy tabelácia dosiahne koniec riadku a prebudí udalosť:

if(dgLocal.editedItemPosition.columnIndex == 13){
dispatchEvent(new Event(MOVE_FOCUS_DOWN, true));

Odtiaľ zápasím s tým, ako sa vŕtať do vykresľovača, aby som sa zameral, len čo bude mať táto udalosť vyšší komponent. Akákoľvek pomoc by bola naozaj ocenená. Thx

odpovede:

0 pre odpoveď č. 1

Ok, tu je riešenie, s ktorým som prišiel. Toto je kód v obsluhe udalostí rodičov (obsluha MOVE_FOCUS_DOWN):

//Find the postition of the item that sent the event :
for each( var row:Object in ParentDatagrid.dataProvider ) {
if( (event.target as ColumnRendererDatagrid).data == row) {
break;
}
i++;
}

//Get the renderer of the next item :
var render:IListItemRenderer = ParentDatagrid.itemToItemRenderer(arrayActes.getItemAt(i+1));
(render as ColumnRendererDatagrid).dgLocal.editedItemPosition = {rowIndex:0, columnIndex:1}

(samozrejme by sa mali vykonávať kontroly v reálnom kóde, aby sa zistilo, či existuje ďalší objekt), ktorý je typu ColumnRendererDatagrid. Odtiaľ len nastavím polohu zaostrenia / úpravy.