Я пытаюсь динамически добавлять comboBox в DataGrid, и для каждого comboBox я ожидаю уникальный dataProvider. Так, например, я построил сетку следующим образом:Динамически заполнять поставщики comboBox в Flex Datagrid
<s:DataGrid id="testGrid"
horizontalCenter="0"
width="100%"
dataProvider="{testArr}"
gridClick="handleTestGridClick(event)">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField = "valName" headerText="Name"/>
<s:GridColumn dataField = "testVals" headerText="Selections>
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:ComboBox id="foo" width="300" dataProvider="{data.testVals}"/>
<s:GridItemRendeder>
</fx:Component>
</s:itemRenderer>
</s:ArrayList>
</s:columns>
</s:DataGrid>
В моей ActionScript У меня есть функция HTTPService, которая возвращает данные в формате JSON, отформатированные следующим образом:
my $store = { "valName" => $$data[$i][0], #a string
"testVals" => [@arr]} #array of strings
Результат обработчика от HTTPService:
private function handleResults(event:ResultEvent):void
{
var str:String = String(event.result);
var temp:Object = JSON.parse(str);
testArr = new ArrayCollection(ArrayUtil.toArray(temp));
}
При попытке заполнить сетку первый столбец (s) будет отображать «valName» (с) я ожидаю, но COMBOBOX (а) остается пустым. Использование события gridClick для отображения DataProvider выбранной строке в представлены следующим образом (обратите внимание, это меняется в зависимости от моего провайдера, но всегда показывает правильные данные):
(Object)#0
testVals=(Array)#1
[0] "test1"
[1] "test2"
valName = "Blah"
Может кто-нибудь дать мне некоторые советы, отзывы и т.д. о том, как чтобы массив testVal отображался в comboBox?
Я не мог понять, как получить список в объекте dataprovider, чтобы он оставался равным нулю. Ваш ответ сделал трюк. Благодарю. – nope