我搜索了好几个小时,但没找到问题的答案。
我正在尝试将组合框放在充满DYNAMIC数据的数据网格中。 (这些组合框的数量和内容总是在变化。我事先不知道有多少列,我需要使用组合框。所以每个组合框都有一个独特的数据提供器,来自外部源,当时程序运行。)
-i发现很多线程讨论这个问题,但是通过蹩脚的mxml文件解决,手动填充源代码中的组合框。我想指出,这对我不利。
-i找到了一个更好的解决方案,他们使用某种自定义itemrenderer从互联网上获取数据。 (一种国家选择器的东西)但遗憾的是,这还不够好,因为世界各国的数量和名称或多或少是静态的,它们不会改变。所以他们的渲染器类不依赖于主算法中的任何参数。
但是在我的程序中,我在自己的actionscript对象中计算数据,然后用它填充一个arraylist。所以在开始时我从网上加载所需的数据,当我得到urlrequest的响应时,我开始填充datagrid / combobox。
我可以毫无困难地填充任何数据网格或组合框,但是将这个组合框放在数据网格单元格中似乎是不可能的。
有人可以帮忙吗?它让我疯狂。我设法用以前的几种语言来做这个,c#,java,甚至php + html,但是在flex中它看起来太复杂了它应该是。
编辑: 我知道,这一数量的网络活动可能意味着服务器上的一些负载。我没有设计它背后的哲学,我只需要写一个满足期望的客户。我的程序看起来像这样:
(我愿意改写它的任何部分,只是为了让那些令人讨厌的组合框工作)
======
这是主程序,我在这里处理一些与登录相关的东西,并为datagrids设置基本的设计属性。 (例如:maxwidth,maxheight,layout constraint等) 没有什么有趣的,除了我实例化actionscript类时的命令,我写的是填充datagrid。
"..<fx:Script>
<![CDATA[
private var myGrid1:MyGridType;
..
somefunction {
myGrid1 = new MyGridType(theDatagridDefinedBefore, "argumentNeededToFillDataGridsWithUniqueData");
}
]]>
</fx:Script>.."
======
在构造函数中,我在第二个参数的帮助下调用urlrequest,然后向其中添加一个eventlistener。当数据到达时,eventlistener触发填充函数:我将结果读入arraycollection,然后将其作为第一个参数中datagrid的数据提供者。
到目前为止一切顺利。
这就是组合框的问题。对于特定的数字列,我实例化我的组合框类。我们称之为“MyComboBoxType”类。
"..
blablabla = new MyComboBoxType(theDatagridDefinedBefore, param1, param2, param3);"
======
我几乎完全一样,我在MyGridType类中做了什么。用param1-2-3从网上寻求帮助。当我收到数据时,填写一个数组收集。也许将arraycollection设置为组合框的数据提供者。 AAAAAAAND现在我希望arraycollection或combobox在datagrid“theDatagridDefinedBefore”上。
答案 0 :(得分:0)
我知道这并不是你想要完成的事情,但过去我有一个类似的问题。看看How to get the value of a ComboBox within a DataGrid,看它是否有帮助。
如果是我,我会填充整个ArrayCollection集,然后在可能的情况下将它们绑定到datagrid。
答案 1 :(得分:0)
您应该为网格中的行构建自定义[Bindable]
数据结构 - 比如MyGridData
类 - 如果您还没有这样做的话);
Array / ArrayCollection /..
MyGridData
个对象。 getItemEditor
函数,或指定
它明确地使用mxml来返回
需要时使用组合框。dataProvider
组合框,你应该指定
来自内部的data.comboArray
renderer类,其中数据是
行使用的MyGridData实例
你正在处理。 (压倒一切
set data(value: Object):void
功能,你可以预处理它。)