【问题标题】:Flex 4 -- Call function when dataprovider changesFlex 4 -- dataprovider改变时调用函数
【发布时间】:2011-02-06 14:37:17
【问题描述】:

如何设置 DataProvider 长度变化时调用的函数?

【问题讨论】:

    标签: apache-flex flex4 dataprovider


    【解决方案1】:

    这是使用事件“CollectionEvent.COLLECTION_CHANGE”的一个很好的解决方案:

    http://blog.flexexamples.com/2008/12/16/detecting-when-the-data-provider-of-a-datagrid-control-changes-in-flex/

    【讨论】:

    • 我尝试将此事件侦听器添加到列表中,但没有被调用。将它添加到 List 的数据提供程序后,它被调用了一次,但在更多更改后没有被调用。
    • 你能在你的问题中添加一些代码吗?实际上,您应该将事件侦听器添加到数据提供者。检查您是否随时没有创建新的数据提供者,在这种情况下,新的提供者将不会保留事件订阅。
    • 我使用拖放和两个列表。这有点类似于这里的第二个例子:help.adobe.com/en_US/flex/using/…
    • 如果在运行时设置了新的 dataProvider,您将不得不重新添加您的 COLLECTION_CHANGE 侦听器,但这会很棘手,因为 DataGroup 不提供任何事件或通知,说明某些东西已将其设置为新的 dataProvider。我会寻找更优雅的解决方案。
    【解决方案2】:

    如果您使用的是 ICollectionView(又名 ArrayCollection),您可以为“collectionChange”事件添加一个事件侦听器。

    文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html#event:collectionChange

    如果您在 MXML 文档中,则 UI 组件的 dataProvider 属性应该是数据绑定的来源。因此,如果这是用例,您只需 {myComponent.dataProvider.length} 将值绑定到其他东西。

    【讨论】:

      【解决方案3】:

      我可以通过它的唯一方法是在动作脚本代码中进行绑定。像这样的:

      protected function creationCompleteHandler(event:FlexEvent):void {
          BindingUtils.bindSetter(myHandleFunction, myList, "dataProvider");
      }
      

      myHandleFunction 通过参数接收具有绑定属性类型的对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多