2010-02-26 70 views
0

当我运行flex应用程序时,我期望在列表组件中看到25个来自我的数据库用户表的记录,而我所看到的只有25个:[object User]数据未在Flash Builder中公开

我试图按照本教程:http://www.adobe.com/devnet/flashcatalyst/articles/building_datacentric_app_flashcast_flashbuilder_03.html,但是因为他使用的是ColdFusion,所以我使用的是HTTP服务类型。基本上,我所做的:

  1. 连接到数据服务(HTTP)
  2. 输入的XML数据,方法GET,getAllItems操作的URL
  3. 搜索的名称字符串作为本作的参数的数据类型操作
  4. 用户为服务名称(如services.users服务包)
  5. 测试操作(需要验证)和点击测试,这表明xml数据
  6. 配置返回类型,选择了用户作为根(而不是用户),和点击它为“is Array?”选项
  7. 然后选择列表组件,检查“新服务呼叫”,并为bind_to_field我查“身份证”(不知道到底是什么绑定到外地做)

以下是已生成相关的东西:

  protected function list_creationCompleteHandler(event:FlexEvent):void 
     { 
      getAllItemsResult.token = users.getAllItems(/*Enter value(s) for */ search); 
     } 

    <fx:Declarations> 
    <s:CallResponder id="getAllItemsResult" /> 
    <users:Users id="users" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/> 
</fx:Declarations> 

      <s:List skinClass="components.DataList3" x="65" y="96" change="list_changeHandler()" id="list" creationComplete="list_creationCompleteHandler(event)" dataProvider="{getAllItemsResult.lastResult}" labelField="id"> 
     </s:List> 

我注意到一个错误消息,说“访问未定义的属性搜索”。但是这又是生成代码,所以我不知道它应该在哪里定义。我主要关心的是它没有显示数据库中的记录(通过xml),而只是显示: [object User]

感谢您的任何建议。

回答

1

您所看到的是Object.toString()的默认impl,它指示正在显示的对象的类型。它看起来好像数据实际加载得很好,你只是没有配置List来正​​确显示它。我看到你正在指定一个labelField值为“id”,但也许该属性实际上并不存在于被返回的对象上?您可能想为labelField尝试另一个值。

+0

无论我将labelField值更改为可用的选项列表,都会发生相同的情况。 – JohnMerlino 2010-03-01 18:46:04

+0

您使用Flash Builder吗?如果是这样,你应该在List.dataProvider的setter上放置一个断点并检查正在设置的数据。 – 2010-03-02 00:55:45

+0

是的问题是XML数据。 – JohnMerlino 2010-03-02 15:46:04