in Flex am asa ceva:
var dg:DataGrid = new DataGrid();
if (something) dg = dg1 else if (something_2) dg = dg2;
dg.dataProvider.getItemAt(3).id;
și dg
indică ÎNTOTDEAUNA spre DataGrid
(chiar dacă dg1
are numele DataGrid_test
și dg2 = DataGrid_test2
) și în cele din urmă se acționează asupra primului meu DataGrid
(DataGrid_test
). De ce? Cum pot trece dg1
sau dg2
la dg
?
Aici este lipit codul aproape complet al acestei părți a aplicației. L-am editat pentru a fi mai clar.
var dg:DataGrid = null;
if ( currentState == "state1" ) { //if this condition is true then app. go into if and
dg = dataGrid_first; // make dg = DataGrid (1)
test.text = "inco"; // shows "inco" in "test" label
} else if ( currentState == "state2" ) { // if this is true then app. go..
dg = dataGrid_second; //here and set dg as DataGrid (exactly!) (2)
test.text = "outgo"; // and change test label into blank text (earlier text disapears)
}
search(dg);
Este modificat cu sfatul lui „@splash” Încă nu funcționează.
EDIT: Am făcut această editare pentru a răspunde tuturor celor care mă ajutați cu asta :) Cred că va fi cea mai bună cale. În codeblock de mai sus am adăugat comentarii. (Vă rugăm să citiți acum comentariile și după aceea reveniți aici :) ) Acum voi explica exact ce se întâmplă. Îl depanez de multe ori și iată rezultatele: dg indică către DataGrid (ca componentă în flex, nu ca dataGrid_first), trebuia să extind DataGrid, așa că acum este componenta ColorColumn (nu știu dacă am numit-o corect) , nu DataGrid. Și dg indică spre ColorColumn, nu spre dataGrid_first sau dataGrid_second. Am încercat chiar și astăzi același lucru care sugerează @splash:
if ( currentState == "state1" ) {
test.text = "inco";
search(dataGrid_first);
} else if ( currentState == "state2" ) {
test.text = "outgo";
search(dataGrid_second);
}
și căutarea încă punctează la ColorColumn :/ Problema mea este foarte ușoară - vreau doar să trec să caut diferite dateGrid pe fiecare stare. Dacă aveți alte idei despre cum pot face asta în mod corect, atunci voi fi încântat să aud despre asta. :) Dar tot nu inteleg de ce nu merge. Funcția mea de căutare folosește algoritmul Boyer-Moor pentru a căuta text prin dataGrid.dataProvider. Dacă găsește ceva, atunci este împins într-o matrice nouă și, după ce trec întregul DataProvider, colorez rândurile cu cuvântul căutat.