使用UNIQUE数据填充组合框INSIDE数据网格IN actionscript(flex)

时间:2011-01-21 01:22:33

标签: flex flash actionscript-3 flex4

我搜索了好几个小时,但没找到问题的答案。

我正在尝试将组合框放在充满DYNAMIC数据的数据网格中。 (这些组合框的数量和内容总是在变化。我事先不知道有多少列,我需要使用组合框。所以每个组合框都有一个独特的数据提供器,来自外部源,当时程序运行。)

-i发现很多线程讨论这个问题,但是通过蹩脚的mxml文件解决,手动填充源代码中的组合框。我想指出,这对我不利。

-i找到了一个更好的解决方案,他们使用某种自定义itemrenderer从互联网上获取数据。 (一种国家选择器的东西)但遗憾的是,这还不够好,因为世界各国的数量和名称或多或少是静态的,它们不会改变。所以他们的渲染器类不依赖于主算法中的任何参数。

但是在我的程序中,我在自己的actionscript对象中计算数据,然后用它填充一个arraylist。所以在开始时我从网上加载所需的数据,当我得到urlrequest的响应时,我开始填充datagrid / combobox。

我可以毫无困难地填充任何数据网格或组合框,但是将这个组合框放在数据网格单元格中似乎是不可能的。

有人可以帮忙吗?它让我疯狂。我设法用以前的几种语言来做这个,c#,java,甚至php + html,但是在flex中它看起来太复杂了它应该是。

编辑: 我知道,这一数量的网络活动可能意味着服务器上的一些负载。我没有设计它背后的哲学,我只需要写一个满足期望的客户。我的程序看起来像这样:

(我愿意改写它的任何部分,只是为了让那些令人讨厌的组合框工作)

======

main.mxml文件

这是主程序,我在这里处理一些与登录相关的东西,并为datagrids设置基本的设计属性。 (例如:maxwidth,maxheight,layout constraint等) 没有什么有趣的,除了我实例化actionscript类时的命令,我写的是填充datagrid。

"..<fx:Script>
    <![CDATA[
        private var myGrid1:MyGridType;
        ..
        somefunction {
            myGrid1 = new MyGridType(theDatagridDefinedBefore, "argumentNeededToFillDataGridsWithUniqueData");
        }
    ]]>
</fx:Script>.."

======

MyGridType.as文件

在构造函数中,我在第二个参数的帮助下调用urlrequest,然后向其中添加一个eventlistener。当数据到达时,eventlistener触发填充函数:我将结果读入arraycollection,然后将其作为第一个参数中datagrid的数据提供者。

到目前为止一切顺利。

这就是组合框的问题。对于特定的数字列,我实例化我的组合框类。我们称之为“MyComboBoxType”类。

"..
blablabla = new MyComboBoxType(theDatagridDefinedBefore, param1, param2, param3);"

======

MyComboBoxType.as文件

我几乎完全一样,我在MyGridType类中做了什么。用param1-2-3从网上寻求帮助。当我收到数据时,填写一个数组收集。也许将arraycollection设置为组合框的数据提供者。 AAAAAAAND现在我希望arraycollection或combobox在datagrid“theDatagridDefinedBefore”上。

2 个答案:

答案 0 :(得分:0)

我知道这并不是你想要完成的事情,但过去我有一个类似的问题。看看How to get the value of a ComboBox within a DataGrid,看它是否有帮助。

如果是我,我会填充整个ArrayCollection集,然后在可能的情况下将它们绑定到datagrid。

答案 1 :(得分:0)

您应该为网格中的行构建自定义[Bindable]数据结构 - 比如MyGridData类 - 如果您还没有这样做的话);

  • 你网格的dataProvider应该 成为Array / ArrayCollection /.. MyGridData个对象。
  • 这一步明显有效,但是 为了诚信:覆盖 getItemEditor函数,或指定 它明确地使用mxml来返回 需要时使用组合框。
  • 至于dataProvider 组合框,你应该指定 来自内部的data.comboArray renderer类,其中数据是 行使用的MyGridData实例 你正在处理。 (压倒一切 set data(value: Object):void 功能,你可以预处理它。)
  • 就这样,你正在使用 您原始实例的参考, 通过绑定你可以检测/ 直接显示对它们的任何更改。
相关问题