в Flex у меня есть что-то вроде этого:
var dg:DataGrid = new DataGrid();
if (something) dg = dg1 else if (something_2) dg = dg2;
dg.dataProvider.getItemAt(3).id;
и dg
ВСЕГДА указывает на DataGrid
(даже если dg1
имеет имя DataGrid_test
и dg2 = DataGrid_test2
), и, наконец, действие выполняется с моим первым DataGrid
(DataGrid_test
). Почему? Как я могу передать dg1
или dg2
dg
?
Вот вставлен практически полный код этой части приложения. Я отредактировал его, чтобы было понятнее.
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);
Он изменен по совету «@splash». По-прежнему не работает.
РЕДАКТИРОВАТЬ: Я сделал это редактирование, чтобы ответить для всех, кто помогает мне в этом :) Я думаю, что это будет лучший способ. В кодовом блоке выше я добавил комментарии. (пожалуйста, прочтите сейчас комментарии, а после возвращайтесь сюда :)) Теперь я объясню, что именно происходит. Я отлаживаю его много раз, и вот результаты: dg указывает на DataGrid (как компонент в flex, а не как мой dataGrid_first), мне нужно было расширить DataGrid, поэтому теперь это компонент ColorColumn (я не знаю, правильно ли я его назвал) , а не DataGrid. И dg указывает на ColorColumn, а не на dataGrid_first или dataGrid_second. Я даже попробовал сегодня то же самое, что предлагает @splash:
if ( currentState == "state1" ) {
test.text = "inco";
search(dataGrid_first);
} else if ( currentState == "state2" ) {
test.text = "outgo";
search(dataGrid_second);
}
и поиск по-прежнему указывает на ColorColumn: / Моя проблема действительно проста - я просто хочу перейти к поиску разных dataGrid для каждого состояния. Если у вас есть другие идеи, как я могу сделать это правильно, я буду рад услышать об этом. :) Но все равно не понимаю, почему не работает. Моя функция поиска использует алгоритм Boyer-Moor для поиска некоторого текста в dataGrid.dataProvider. Если он что-то находит, он помещается в новый массив, и после передачи всего dataProvider я раскрашиваю строки искомым словом.