22 March 2010
要成功完成本教程,请务必按照 ColdFusion 和 Flash Builder 4 beta 入门中所述设置并测试您的环境:
如果已成功完成“ColdFusion 和 Flash Builder 4 beta 入门”教程或本系列中的任何其他教程,您可以跳过上述步骤。
本教程适用于:
全部
Adobe Flash Builder 4 提供一个 Data Management 向导,它使您能够将 ColdFusion 服务器端创建、检索、更新和删除 (CRUD) 业务逻辑轻松映射到数据服务调用,然后将它们应用到 UI 控件。
在本教程中,您将为 CFC 创建一个数据服务,然后通过为 UI 控件创建 ActionScript 事件处理函数,使用 Flash Builder Data Management 向导映射应用程序与服务器之间的 CRUD 操作。
如果已成功完成“ColdFusion 和 Flash Builder 4 beta 入门”教程或本系列中的任何其他教程,您可以跳过上述步骤。
本教程适用于:
正如介绍部分提到的那样,本教程使用的开发环境与 ColdFusion 和 Flash Builder 4 beta 入门教程以及本系列中的其他教程相同。
如果未列出该数据类型,请按照以下步骤操作,将您的数据类型名称指定到对 CFC 方法的 getAllData 服务调用中检索到的返回数据。
查询的每条记录已放入 ActionScript 对象中,并在名称/值对中设置每列数据(FIRSTNAME、LASTNAME、EMAIL 等)。每条记录从零开始编写索引。
注意:不同于 ColdFusion,ActionScript 是一种零索引语言。
向导允许您为数据指定返回类型名称,而不是像往常那样将返回数据作为对象进行引用。接下来您将这样做。
您将看到“Data/Services”视图的“Data Types”类别中列出了 EmployeeSalesData 数据类型(请参阅图 5)。请注意,数据类型的属性是 CFC 方法返回的查询列。
在这一部分中,您将使用 Data Management 向导将 CRUD 功能映射到相应的服务调用,从而添加、更新和删除数据库中的记录。
您必须选择“SALESTARGETID”作为 EmployeeSalesData 数据类型的唯一标识符,因为它是数据库的主密钥。
在“Map Data Management Operations”对话框中,您必须为各个字段选择适当的服务调用。
createItem() 服务操作。getItem()。updateItem()。deleteItem()。 图 7 显示此时“Map Data Management Operations”对话框的外观。
您在之前部分中了解到 Flash Builder Data Service 向导会通过 CFC 检查各个服务的参数。对于 add 和 update 操作,您将一个复杂对象传递到 CFC,本例中这个复杂对象是 EmployeeSalesData 数据类型。getItem() 和 deleteItem() 操作只需要传递主密钥 SALESTARGETID 进行处理。
您应该看到数据管理图标(首尾相连、围成圆形的两个绿色箭头)此时已应用到 EmployeeSalesData 数据类型(请参阅图 8)。并且 SALESTARGETID 数据对象旁现在显示一个钥匙图标,表明它是受管数据的主密钥。
在这一部分中,您将使用员工销售信息填充 DataGrid 控件。
注意:实际使用中,您的 Flash Builder 项目中通常只有一个主应用程序文件。使用本系列进行操作时,您将为每个教程新建一个主应用程序文件,以避免创建其他 Flash Builder 项目。
getAllData() 函数拖放到 DataGrid 控件上(请参阅图 11)。 DataGrid 控件将使用数据库中的列填充列标题。
您将看到 DataGrid 控件填充了数据库的所有数据(请参阅图 13)。请注意,您可以编辑 DataGrid 控件中的所有单元格,但主密钥值除外。
在这一部分中,您将为显示添加 Button 控件,用户单击显示即可添加、删除或保存员工销售数据。然后,由 Flash Builder 为 Button 控件单击处理函数生成骨架代码。最后,编写一些简单的 ActionScript 逻辑,将数据发送回服务器。
在以下步骤中,您将 Button 控件添加到应用程序显示,用户可以通过它触发添加、删除和保持功能。
在以下步骤中,您将为 Create Button 控件创建一个单击处理函数,它会将记录添加到 DataGrid 控件。
Flash Builder 4 将生成一个自定义 ActionScript 单击处理函数功能并切换到“Source”模式,以便您将业务逻辑添加到其中。
注意:ActionScript 支持许多事件类型。event 参数的 MouseEvent 数据类型声明这一代码是为用户鼠标交互编写的。有关 ActionScript 事件的更多信息,请参阅一周学会 Flex 应用开发视频培训系列中的处理用户事件和事件对象介绍视频。
//TODO Auto-generated method stub 注释替换为使用 var 关键字新建的 ActionScript 变量。将它命名为 employee 并将数据类型指定为 EmployeeSalesData。将变量设置为 EmployeeSalesData 的一个新实例。protected function
createButton_clickHandler(event:MouseEvent):void
{
var employee:EmployeeSalesData = new
EmployeeSalesData();
}
这一代码创建了您之前定义的 EmployeeSalesData 数据类型的一个新实例。记住,getAllData() 服务操作中收到的各个记录是 EmployeeSalesData 的一个实例,它包含 SALESTARGETID、FIRSTNAME、LASTNAME 以及数据库中所有其他属性的值。如果您剪切并粘贴这一代码,Flash Builder 不会添加 import 语句。现在,将它手动添加到另一个 import 语句上方。
new EmployeeSalesData() 语句时,Flash Builder 会将以下 import 语句自动添加到 Script 区块开头,允许您在 ActionScript 代码中使用这个类。import valueObjects.EmployeeSalesData;
SALESTARGETID、FIRSTNAME、LASTNAME、PHONE、EMAIL、REGION、EMPIMAGE、YTD 和 Q1GOAL 属性:protected function
createButton_clickHandler(event:MouseEvent):void
{
var employee:EmployeeSalesData = new
EmployeeSalesData();
employee.SALESTARGETID = "100039";
employee.FIRSTNAME = "New";
employee.LASTNAME = "New";
employee.PHONE = "000-000-0000";
employee.EMAIL = "New";
employee.REGION = "New";
employee.EMPIMAGE = "New";
employee.Q1GOAL = 0;
employee.YTD = 0;
}
您刚使用新数据填充了 EmployeeSalesData 对象的新实例。
注意:在本例中,您将对 SALESTARGETID 属性进行硬编码。
createButton_clickHandler() 函数的员工属性声明下方,将新建的员工信息附加到 DataGrid 控件的 dataProvider 属性后。protected function createButton_clickHandler(event:MouseEvent):void
{
...
employee.YTD = 0;
employeeDataGrid.dataProvider.addItem(employee);
}
DataGrid 控件的 dataProvider 属性包含一个复杂对象,该对象包含所有记录的全部 EmployeeSalesData 实例。DataGrid 控件的 addItem() 方法将指定项(本例中为员工)添加到数据末尾。
verticalScrollPosition 属性设置为根据添加到控件的新行做出调整。protected function
createButton_clickHandler(event:MouseEvent):void
{
...
employeeDataGrid.dataProvider.addItem(employee);
employeeDataGrid.verticalScrollPosition = employeeDataGrid.dataProvider.length - 1;
}
dataProvider 属性有一个长度值,它包含 DataProvider 控件中的记录数。ActionScript 从零开始计数,所以必须从长度中减去 1 才能获得最后一个记录的索引。通过为 verticalScrollPosition 属性设置这种计算方法,您强制 DataGrid 控件的滚动条在您添加新记录时移到底部。
createButton_clickHandler(event)(请参阅图 15)。
DataGrid 控件底部将添加一个条目(请参阅图 16)。但是请注意,您只是将数据添加到 DataGrid 控件。您并未将新记录添加到服务器。
在以下步骤中,您将创建一个单击处理函数,它将对 DataGrid 控件的所有更改提交给服务器。
注意:Flash Builder 将生成一个事件处理函数功能并切换到“Source”视图。
//TODO Auto-generated method stub 注释替换为对 F4CF_ManagingData_Service 的 commit() 函数的调用,如以下代码片段所示: protected function
saveAllButton_clickHandler(event:MouseEvent):void
{
f4CF_Getting_Started_Service.commit();
}
记住,您之前创建过一个名为 F4CF_Managing_Data_Service 的数据服务。Flash Builder 已生成可以使这个数据服务正常使用所需的全部代码。您在 ActionScript 中使用相同名称引用该服务作为数据服务,不同之处在于首字母小写。这是实例命名的常见做法。
commit() 函数是数据服务的内建函数,它将运行您在 Data Management 向导中定义为更新操作的服务。在本例中,它将为 DataGrid 控件中的各个记录运行一次 updateItem() 函数。
此时可以看到新记录已添加到数据库中。
在以下步骤中,您将为 Delete Button 控件创建一个单击处理函数,可以使用它删除 DataGrid 控件中的记录。
注意:Flash Builder 将生成一个单击处理函数功能并切换到“Source”视图。
deleteButton_clickHandler() 函数中,使用 deleteItem() 服务操作从使用主密钥 SALESTARGETID 的 DataGrid 控件 employeeDataGrid 中删除选定行:protected function
deleteButton_clickHandler(event:MouseEvent):void
{
f4CF_Getting_Started_Service.deleteItem(employeeDataGrid.selectedItem.SALESTARGETID);
}
刷新浏览器时,可以看到已经从数据库中删除该记录。
在本教程中,您学会了如何使用 Flash Builder Data Services 和 Data Management 向导创建客户端到服务器 CRUD 功能。要进一步了解如何配合使用 Flex 和 ColdFusion,请参阅以下教程:
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 |