【问题标题】:advancedDataGrid with two providers具有两个提供程序的高级数据网格
【发布时间】:2009-11-12 15:41:04
【问题描述】:

我想为 1 个高级数据网格提供 2 个数据提供程序:1 个普通数据提供程序,第二个用于一个列中的组合框。我想让这个组合框从数据库中的列中获取数据(我已经在 arrayCollection 中拥有它)。 我只是不知道如何以不必每次为每个组合框(作为自定义组件)从数据库中读取数据的方式为组合框提供数据。我应该将 arrayCollection 传递给自定义组件吗?还是在 mxml 中“内联”?最好的方法是什么?

感谢您的帮助

【问题讨论】:

  • 所有组合框(每一行)是否具有相同的数据提供者?

标签: apache-flex data-binding actionscript flexbuilder mxml


【解决方案1】:

最简单的就是

  • 在您的 itemrenderer 上创建一个静态属性并传入数据
  • 或者,通过全局变量在 itemrenderer 中查找数据

【讨论】:

    【解决方案2】:

    您能不能只将 arrayCollection 设置为绑定到每一行的对象的属性?

    一行等于一个对象,其属性包含绑定到组合框的 arrayCollection。

    【讨论】:

      【解决方案3】:

      我假设 table1 中的 field_2 包含表 2 中一行的键。

      设置您的数据网格以使用 table1 作为提供者。确保第二列使用带有组合框的自定义渲染器

      <mx:AdvancedDataGrid dataProvider="{table1}">
         <mx:groupedColumns>
            <mx:AdvancedDataGridColumn headerText="Column 1" dataField="field_1" />
            <mx:AdvancedDataGridColumn headerText="Column 2" dataField="field_2" 
               itemRenderer="{CustomRenderer}"/>
         </mx:groupedColumns>
      </mx:AdvancedDataGrid>
      

      渲染器只是一个画布,里面有一个组合框。组合框使用 table2 数据的副本(只需创建一个数组集合并用数据库中的数据填充一次)作为提供者,并使用 table1 中的数据来显示所选项目。

      <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" dataChange="dataChange()>
         <mx:Script>
            <![CDATA[
               private function dataChange():void
               {
                  //Update combobox selected index
                  myCombo.selectedIndex(data);
               }
            ]]>
         </mx:Script>
      
         <mx:ComboBox id="myCombo" dataProvider="{table2_copy}"\>
      </mx:Canvas>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        • 2017-07-30
        • 1970-01-01
        • 2020-04-08
        • 2011-10-21
        • 2013-03-05
        相关资源
        最近更新 更多