Adobe
产品
创意套装
Photoshop
Acrobat 系列产品
Flash 平台
在线营销套装
数字企业平台
数字出版套装
更多产品
解决方案学习帮助下载公司
商店
在线商店
产品价格
批量许可
查找经销商
搜索
 
信息 登录
欢迎,我的支持
我的帐户
注销
为何登录?登录后可以管理您的帐户,访问试用版下载、产品扩展和社区区域等。
Adobe
产品 分类   搜索  
解决方案 公司
帮助 学习
登录 欢迎, 我的货物 我的支持
Qty:
Subtotal
Checkout
Adobe 开发者中心 / Flex 开发人员中心 /

创建主/详细表单

作者 Trilemetry

Trilemetry
  • Trilemetry, Inc.

Content

  • 配置数据返回类型
  • 创建主控件
  • 更改主控件显示
  • 生成详细表单
  • 更新员工信息

创建日期

29 July 2010

页面工具

在 Facebook 上共享
在 Twitter 上共享
在 LinkedIn 上共享
书签
打印

要求

必备知识

要成功完成本教程,请务必按照 ColdFusion 和 Flash Builder 4 beta 入门中所述设置并测试您的环境:

  1. 设置范例数据库和 ColdFusion 数据源。
  2. 设置 Flash Builder 数据服务项目。
  3. 创建一个 Flash Builder 数据服务,以连接到 CFC。

如果已成功完成“ColdFusion 和 Flash Builder 4 beta 入门”教程或本系列中的任何其他教程,您可以跳过上述步骤。

本教程适用于:

  • 经验丰富、但不具备 Adobe Flex 框架或 Adobe Flash Builder 4 经验的 ColdFusion 开发人员。
  • 熟悉 ColdFusion 组件的 ColdFusion 开发人员。

用户级别

全部

必需产品

  • ColdFusion 8 (Download trial)
  • Flash Builder 4 (Download trial)

Adobe Flash Builder 4 提供一个表单向导,它允许您使用服务器端数据快速构建一个主/详细界面并且几乎不用编写代码。首先定义 UI 控件,它将显示待编辑用户的主列表,然后生成一个用于显示和编辑详细信息的表单。

在本教程中,您将使用员工数据列表填充一个 ComboBox 控件,并自定义显示。然后,您将生成一个表单,它将显示选定员工的可编辑信息。最后,您通过实施一个按钮更新数据库中的员工记录。

配置数据返回类型

正如介绍部分提到的那样,本教程使用的开发环境与 ColdFusion 和 Flash Builder 4 beta 入门教程以及本系列中的其他教程相同。

  1. 在 Flash Builder 4 beta 中找到“Data/Services”视图。您应当看到图 1 中所示的 F4CF_Getting_Started_Service 服务。
验证是否已定义 EmployeeSalesData 数据类型
图 1.验证是否已定义 EmployeeSalesData 数据类型。
  1. 展开“Data Types”类别。如果列出 EmployeeSalesData 数据类型(如图 1 所示),您可以跳过下一部分创建主控件。

如果未列出该数据类型,请按照以下步骤操作,将您的数据类型名称指定到对 CFC 方法的 getAllData 服务调用中检索到的返回数据。

  1. 在“Data/Services”视图中,右键单击 getAllData 函数,并选择“Configure Return Type”(请参阅图 2)。
配置 getAllData() 函数的返回类型。
图 2.配置 getAllData() 函数的返回类型。

查询的每条记录已放入 ActionScript 对象中,并在名称/值对中设置每列数据(FIRSTNAME、LASTNAME、EMAIL 等)。每条记录从零开始编写索引。

注意:不同于 ColdFusion,ActionScript 是一种零索引语言。

向导允许您为数据指定返回类型名称,而不是像往常那样将返回数据作为对象进行引用。接下来您将这样做。

  1. 在“Configure Operation Return Type”对话框中,新建一个名为 EmployeeSalesData 的自定义数据类型(请参阅图 3)。
新建一个自定义数据类型
图 3.新建一个自定义数据类型。
  1. 单击“Next”。
  2. 单击“Yes”单选按钮,指定操作需要远程凭据。
  3. 在“Remote Service Authentication”窗口中输入您的用户名和密码(请参阅图 4)。
输入 ColdFusion RDS 服务器的远程凭据
图 4.输入 ColdFusion RDS 服务器的远程凭据。
  1. 单击“OK”,然后单击“Next”。
  2. 在“Modify Properties of Return Type”对话框中,将所有属性保持选中状态并单击“Finish”。
  3. 单击“Finish”。

您将看到“Data/Services”视图的“Data Types”类别中列出了 EmployeeSalesData 数据类型(请参阅图 5)。请注意,数据类型的属性是 CFC 方法返回的查询列。

数据类型及其属性
图 5.数据类型及其属性。

创建主控件

在这一部分中,您将学会如何使用员工销售数据填充 ComboBox 控件,从而创建主控件。

  1. 在 F4CF_Getting_Started 项目中,关闭所有打开的 MXML 文件。
  2. 从菜单中选择“File”>“New”>“MXML Application”新建一个应用程序文件。
  3. 将文件命名为 F4CF_Master_Detail.mxml 并将“Layout”下拉列表设置为“None”。
  4. 单击“Finish”。

    注意:实际使用中,您的 Flash Builder 项目中通常只有一个主应用程序文件。使用本系列进行操作时,您将为每个教程新建一个主应用程序文件,以避免创建其他 Flash Builder 项目。

  5. 切换到“Design”模式。
  6. 找到“Components”面板(选择“Window”>“Components”)。

    ComboBox 控件将用于主用户界面图素。也可以使用 List 控件、DataGrid 控件或任何其他基于列表的控件。

  7. 将一个 ComboBox 控件拖放到“Design”区域中(请参阅图 6)。
将一个 ComboBox 控件放入“Design”区域中
图 6.将一个 ComboBox 控件放入“Design”区域中。

使用数据填充主控件

现在,您将使用 getAllData() CFC 函数显示 ComboBox 控件中的员工姓氏。

  1. 将 F4CF_Getting_Started_Service 的 getAllData() 函数拖放到 ComboBox 控件上(请参阅图 7)
将 ComboBox 控件绑定的 EmployeeSalesData 数据类型
图 7.将 ComboBox 控件绑定的 EmployeeSalesData 数据类型。
  1. 在显示的“Bind To Data”对话框中,从“Bind to field”弹出菜单中选择“LASTNAME”(请参阅图 8)。
“Bind To Data”对话框
图 8.“Bind To Data”对话框。
  1. 单击“OK”。

    注意:此时,ComboBox 控件应包含一个图标,表明它绑定到数据(请参阅图 9)。

这个图标表明 ComboBox 控件绑定到数据
图 9.这个图标表明 ComboBox 控件绑定到数据。
  1. 保存文件,单击工具栏中虫子按钮左侧的“Play”(绿色圆形)按钮运行应用程序(请参阅图 10)。(也可以选择“Run”>“F4CF_Master_Detail”。)
单击 Flash Builder“Run”按钮
图 10.单击 Flash Builder“Run”按钮。
  1. 单击 ComboBox 控件以更改选定员工信息(请参阅图 11)。
从 ComboBox 控件中选择一个员工
图 11.从 ComboBox 控件中选择一个员工。

更改主控件显示

默认情况下,“Bind To Data”对话框只允许您将数据库中的一个字段绑定到 ComboBox 显示。对于员工姓名的情况,它会出问题,因为可能有多个员工名字或姓氏相同。

在这一部分中,您将学会如何通过实施一个 ActionScript 函数,显示每个员工的名字和姓氏,从而跳过这个默认行为。

  1. 在 Flash Builder 中,选择“Design”区域中的 ComboBox 控件,然后切换到“Source”模式。

    注意:您在一个模式中选定的代码或控件在切换到另一个模式时依然保持选定状态。

    请注意,ComboBox 代码定义了许多属性,其中包括控件的 x 和 y 位置。creationComplete 属性实际是一个事件,它指示应用程序从 getAllData() 操作检索数据(您之前从“Data/Services”视图将该操作映射到 CFC)。dataProvider 属性获得该服务调用的结果,并将它绑定到 ComboBox 控件。尽管只显示一个字段,该属性依然将数据库的所有数据列绑定并存储到 ComboBox 控件。dataProvider 属性值两侧的花括号向应用程序表明该值是动态的。

    LabelField 属性声明 ComboBox 控件中显示的变量。如果您从“Bind To Data”对话框中选择“LASTNAME”,向导会将“LASTNAME”字段添加到 LabelField 属性,指示 ComboBox 控件显示该值。

    在以下步骤中,您将使用 LabelFunction 属性调用您编写的一个自定义函数,它用于将 LASTNAME 和 FIRSTNAME 变量合并到 ComboBox 控件显示中。

  2. 找到 <fx:Script> 标签区块。
  3. 在填充 ComboBox 控件的函数下方,使用以下语法创建一个名为 displayFullName 的专用函数:
<fx:Script> <![CDATA[ import mx.events.FlexEvent; import mx.controls.Alert; protected function comboBox_creationCompleteHandler(event:FlexEvent):void { getAllDataResult.token = f4CF_Getting_Started_Service.getAllData(); } private function displayFullName() { } ]]> </fx:Script>
  1. 该函数将一个字符串返回给 ComboBox 控件,字符串包含员工的名字和姓氏,所以请在函数声明末尾添加一个冒号和单词 String:
private function displayFullName():String { }

对于 ComboBox 控件显示的每条员工记录,它都会运行您刚才创建的这个函数。记住,dataProvider 包含每个员工的所有数据并且 ComboBox 控件不清楚您要显示的内容,所以它需要将所有数据传递给您,供您选择所需内容。

应用程序将数据传递到一个包含名称/值对的复杂对象中的函数。您可以为这个对象随意命名,通常将它命名为 item。将它的数据类型指定为普通 ActionScript Object 实例。

  1. 在 displayFullName() 函数的括号之间,添加 item 参数并将它的数据类型指定为“Object”类:
private function displayFullName(item:Object):String

现在,您可以一种简单的字符串连接合并数据库中列出的各个员工的名字和姓氏。记住,数据库中有两列为 FIRSTNAME 和 LASTNAME,可以通过传递给函数的 item 对象进行引用它们。

  1. 使用 return 关键字将 FIRSTNAME 和 LASTNAME 字段返回 ComboBox 显示;请务必在两个字段之间添加一个空格,按惯例显示它们。
private function displayFullName(item:Object):String { return item.FIRSTNAME + " " + item.LASTNAME; }
  1. 找到 ComboBox 控件 MXML 代码。
  2. 删除属性 labelField="LASTNAME"。
  3. 将属性 labelFunction 添加到 ComboBox 控件标签中,将其值设置为 displayFullName。

    您的 ComboBox 控件 MXML 代码应当如下:

<mx:ComboBox x="71" y="56" editable="true" id="comboBox" creationComplete="comboBox_creationCompleteHandler(event)" dataProvider="{getAllDataResult.lastResult}" labelFunction="displayFullName"/>

不要对属性 labelFunction 中的函数使用括号。您只是为 ComboBox 控件提供函数名称,而不是直接调用该方法。

  1. 保存文件并运行应用程序。

    现在将显示员工的全名(请参阅图 12)。

按全名选择员工
图 12.按全名选择员工。

生成详细表单

在这一部分中,您将使用 Flash Builder Form Generation 向导创建一个详细表单,它将主控件(本例中为 ComboBox 控件)用作自己的数据提供程序。

  1. 切换到“Design”模式并选择 ComboBox 控件。
  2. 右键单击 ComboBox 控件并选择“Generate Details Form”(请参阅图 13)。
生成详细表单
图 13.生成详细表单。
  1. 在“Choose source”对话框中,保留默认设置不变并单击“Next”(请参阅图 14)。
Generate Form 向导的“Choose source”对话框
图 14.Generate Form 向导的“Choose source”对话框。
  1. 在“Property control mapping”对话框中,保留选定值(请参阅图 15)。
Generate Form 向导的“Property control mapping”对话框
图 15.Generate Form 向导的“Property control mapping”对话框。
  1. 单击“Finish”。
  2. 将详细表单放在 ComboBox 控件右侧。
  3. 保存文件并运行应用程序。此时表单中已填入 ComboBox 控件中第一个员工的相关信息。
  4. 从 ComboBox 控件中选择一个员工。

此时表单应填入选定员工的员工销售数据(请参阅图 16)。

在详细表单中显示员工信息
图 16.在详细表单中显示员工信息。

更新员工信息

在这一部分中,您将一个 Button 控件添加到界面,它允许用户更新服务器上的员工信息。

  1. 从“Components”视图中,将一个 Button 控件拖放到详细表单下方的“Design”区域中。

    如果放下 Button 控件时并未显示它,请单击“Design”模式按钮右侧的刷新按钮。

  2. 双击 Button 控件,将它的标签更改为 Update(请参阅图 17)。
将 Button 控件的标签更改为“Update”
图 17.将 Button 控件的标签更改为“Update”。
  1. 找到 F4CF_Getting_Started_Service 数据服务的 updateItem() 函数。
  2. 将 updateItem() 函数拖放到“Update”按钮上(请参阅图 18)。它将 updateItem() 服务操作与“Update”按钮关联在一起。
将 updateItem() 服务调用应用到“Update”按钮
图 18.将 updateItem() 服务调用应用到“Update”按钮。

如果视图未自动切换,请单击“Source”按钮切换到“Source”模式。

当您将 updateItem() 函数放到 Button 控件上时,Flash Builder 会生成一个自定义 ActionScript 单击处理函数功能。

Flash Builder 应当已经选中 updateItem() 服务调用的括号之间的单词“item”:

protected function button_clickHandler(event:MouseEvent):void { updateItemResult.token = f4CF_Getting_Started_Service.updateItem(item); }

注意:ActionScript 中有许多事件类型。event 参数的 MouseEvent 数据类型声明这一代码是为用户鼠标交互编写的。有关 ActionScript 事件的更多信息,请参阅一周学会 Flex 应用开发培训系列中的处理用户事件和事件对象介绍视频。

此处使用单词 item 纯属巧合,它正好与 ComboBox 控件中的对象名称相同。记住,CFC 将 updateItem() 方法的期望参数名称定义为 item。

您要传递给 updateItem() 操作的服务对象包含传递的所有个别员工相关数据。这些信息存储在您之前命名的 EmployeeSalesData 数据类型中。

  1. 将服务调用中的项引用更改为 employeeSalesData:
protected function button_clickHandler(event:MouseEvent):void { updateItemResult.token = f4CF_Getting_Started_Service.updateItem(employeeSalesData); }

它将 employeeSalesData 对象以及从表单所做的全部更改传递回服务器,从而更新数据库。

  1. 保存文件并运行应用程序。
  2. 从 ComboBox 控件中选择一个员工。
  3. 更改员工信息并单击“Update”按钮(请参阅图 19)。
更新员工记录
图 19.更新员工记录。
  1. 刷新浏览器,并选择您编辑过的员工记录。

员工信息此时应包含您指定的新值。

后续工作

在本教程中,您学会了如何使用 Flash Builder 创建主/详细界面并且几乎不用编写代码。您还学会了如何自定义 ComboBox 控件中显示的数据。您还可以通过使用 Adobe Flash Builder 4 beta 生成表单教程进一步了解返回数据和数据类型。

Tutorials & Samples

Tutorials

  • Flex mobile performance checklist
  • Flex and Maven with Flexmojos – Part 3: Journeyman
  • Migrating Flex 3 applications to Flex 4.5 – Part 4

Samples

  • Twitter Trends
  • Flex 4.5 reference applications
  • Mobile Trader Flex app on Android Market

Flex User Forum

More
02/07/2012 Newbie - Views
01/24/2012 How to navigate through the views without losing content?
02/07/2012 ActionScript rounding issue
02/07/2012 Setting Value of Static Const

Flex Cookbook

More
01/20/2012 Skinnable Transform Tool
12/12/2011 Date calculations using 'out-of-the-box' functions
12/05/2011 String replaceAll in ActionScript
12/04/2011 Flex: Validate/revert editable Datagrid input value

产品

  • Creative Suite
  • Photoshop 系列产品
  • Acrobat 系列
  • Flash Platform
  • Digital Marketing Suite
  • Digital Enterprise Suite
  • Digital Publishing Suite
  • 移动应用程序

解决方案

  • 客户体验管理
  • 内容创作
  • 数字营销

行业

  • 教育
  • 金融服务业
  • 政府部门

帮助

  • 产品帮助中心
  • 订货和退货
  • 下载和安装
  • 我的 Adobe

学习

  • Adobe 开发人员连接
  • Adobe TV
  • 培训和认证
  • 论坛
  • 设计中心

购买方式

  • 在线商店
  • 批量许可
  • 查找经销商

下载

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

公司

  • 新闻编辑室
  • 合作伙伴计划
  • 公司社会责任
  • 工作机会
  • 投资者关系
  • 事件
  • 法律
  • 联系 Adobe
选择您的地区 中国(更改)
选择您的地区 关闭

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • España
  • France
  • Deutschland
  • Hrvatska
  • Ireland
  • Israel - English
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • Magyarország
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Österreich - Deutsch
  • Polska
  • Portugal
  • România
  • Россия
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Slovenija
  • Slovensko
  • Srbija
  • Suomi
  • Sverige
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • Pacific - English
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated。保留所有权利。

使用本网站表明您同意使用条款和在线隐私政策(2009 年 7 月 14 日更新)。

京 ICP 备 10217899 号 京公网安备 110105010404