【问题标题】:combobox dataprovider组合框数据提供者
【发布时间】:2009-09-28 21:05:35
【问题描述】:

我有以下几点:

 <mx:RemoteObject id="myCFC" destination="ColdFusion" source="components.myCFC"  showBusyCursor="true">
    <mx:method name="getStuff" result="UserHandler(event);"/>
</mx:RemoteObject>

...
<mx:ComboBox id="propertyCode" dataProvider="{qry_stuff}" labelField="name" />

Index.as 有:

   [Bindable] public var qry_stuff:ArrayCollection = new ArrayCollection;

 private function UserHandler(event:ResultEvent):void {
   qry_stuff= event.result as ArrayCollection;
 }

public function init():void {
  /* call my remote Object to get my data */
   myCFC.getStuff();
  }

我的问题是组合框显示 [object Object]

我知道 cfc 没有任何问题,并且在 getStuff 中有一个名为“name”的字段。为什么不显示对象的值? 提前致谢。

【问题讨论】:

  • event.result的结构是什么?我猜问题在于创建 ArrayCollection。您还可以检查 ArrayCollection 的大小。
  • ArrayCollection 的大小似乎是正确的。 (它等于查询出来的记录数)。不确定 event.result 是什么/。我从blog.tygate.com/?p=463 复制/粘贴/修改了此代码,请告诉我您的想法。
  • 你试过用其他东西作为labelField吗? ComboBox 可以显示“其他东西”吗?

标签: apache-flex combobox dataprovider cfc


【解决方案1】:

ComboBox 类中有一个名为 labelField 的属性。继续并将其设置为返回数据的名称字段。如果这不起作用 - 您需要从 CF 调试返回的值 - 以确保 name 属性实际上也被填充在客户端。

此外,您的数据可能以数组(而不是 ArrayCollection)的形式返回 - 在这种情况下,您需要设置:

qryStuff = ArrayCollection( event.result as Array );

注意:您可能还希望通过创建一个 ActionScript 值对象来“强类型化”您的响应数据 - 这样它就不仅仅是从 CF 返回的通用“对象”。然后,您可以使用 [RemoteClass(alias="com.sample.MyCFC")] 元数据标签将该值对象映射到您的服务器端 VO。

【讨论】:

    【解决方案2】:

    在我的 cfc 中,我必须明确设置数据/标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      相关资源
      最近更新 更多