- 浏览: 590155 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
smilezhouwei:
请问CruiseControl在加载jar包时,由于jar包过 ...
修改CruiseControl的端口 -
zengxuefei:
不起作用啊,有bug
Flex+Java多文件上传 -
lzeus:
模仿的tomcat源码吧?
java事件处理机制(自定义事件)【转】 -
yangbobestone:
...
FreeMarker整合Struts2 -
fddjxllren:
那是因为你没配置事务,楼主的那个主要是针对事务的写法
Spring2.5+JUnit4单元测试
理解 Flex itemEditor-第 1 部分:内联 itemEditor
转载 http://www.adobe.com/cn/devnet/flex/articles/itemeditors_pt1.html
我最近完成了一个有关 itemRenderer 的系列-对列表控制的自定义,它们用于控制列表内容的显示格式。显示和渲染内容是一种十分有效的 UI 技术,而使用 Flex 您几乎可以完成想象得到的任何事。
这是有关 itemEditor 的新系列的第 1 部分,允许在列表控制中直接更改数据。第一篇文章讨论内联 itemEditor,可以在 MXML 文件中直接编写这些简单却十分有用的组件。该系列的后续文章将讨论更复杂的编辑、验证、事件以及将 itemRenderer 用作 itemEditor。
TextInput 编辑器
在列表控制中直接编辑十分便捷。想象一个仓库库存的 DataGrid,您可以在网格中直接调整内容而无需特殊弹出(请参阅图 1)。列表控制有一个内建编辑器 TextInput 控制,每当用户单击可编辑区域时会显示它,该区域包括行(对于列表)、分支(对于树)或单元格(对于 DataGrid)。您只需将列表控制的 editable
属性设置为 true。对于 DataGrid,将 DataGridColumn 的 editable
属性设置为 false 即可将某个列排除在可编辑范围以外。
itemEditor 与 itemRenderer 的不同之处在于只能看到 itemEditor 的一个实例,它在编辑的单元格上。仅当要编辑的单元格收到输入焦点后,才能看到 itemEditor。随后将隐藏 itemRenderer 并将 itemEditor 移到该位置、根据该区域大小做出调整并为它提供记录的数据。完成编辑(通过将焦点移到另一个位置)时,列表控制将新值从编辑器复制到 dataProvider 记录。
在图 1 显示的应用程序中,当用户单击“Part #”列的某个单元格时,dataProvider[row][dataField]
值将赋予 itemEditor (TextInput) 控制的 text
属性。完成编辑时,itemEditor (TextInput) 控制的 text
属性值将复制到 dataProvider[row][dataField]
。作为一个集合,dataProvider 根据更新调度事件。
虽然默认 TextInput 控制是个不错的编辑器,它实际上只适用于最简单的情况。例如,它适用于书名、作者姓名或产品编号等字符串值。如果需要更多控制或要验证用户输入,您就需要亲自动手。
Flex 控制用作 itemEditor
以下说明了如何创建一个只接受数值的 itemEditor:
<mx:DataGrid x="46" y="270" editable="true" dataProvider="{employeeDB}">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Position" dataField="position"/>
<mx:DataGridColumn headerText="Age" dataField="age">
<mx:itemEditor>
<mx:Component>
<mx:TextInput restrict="0-9" maxChars="3" />
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
restrict
和 maxChars
属性确保了 age 值限制为三位数的数值。
CheckBox 是用于 itemEditor 的另一个常见控制,因为它在编辑布尔值时很实用。图 2 显示了一个示例,它使用 CheckBox 编辑某个库存程序的“In Stock”列的值。
以下是它需要的代码:
<mx:DataGrid x="531" y="273" editable="true" dataProvider="{inventoryDB}">
<mx:columns>
<mx:DataGridColumn headerText="Product" dataField="product"/>
<mx:DataGridColumn headerText="Part #" dataField="part"/>
<mx:DataGridColumn headerText="In Stock?" dataField="inStock"
labelFunction="inStockLabeler"
itemEditor="mx.controls.CheckBox" editorDataField="selected" />
<mx:DataGridColumn headerText="Quantity" dataField="quantity"/>
</mx:columns>
</mx:DataGrid>
在此例中,使用 labelFunction (inStockLabeler
) 渲染该列中单元格的内容,它可以显示“Yes”、“No”、“In Stock”或“Out of Stock”等描述性字符串。itemEditor
属性设置为 mx.controls.CheckBox 类。DataGridColumn 还设有一个同样重要的属性:editorDataField
。该字段表明完成编辑时用于取走值的 itemEditor 类的属性。此例中,它是 CheckBox 的 selected
属性。完成编辑时,DataGrid 将使用 CheckBox 的 selected
属性替换数据记录中的 inStock
属性。
此时,您可能会疑惑为什么 TextInput 的示例没有提供 editorDataField
属性。这是因为 editorDataField
的默认值是“text”,它恰巧是 TextInput 控制中保留该值的属性的名称。
可以将这种技术用于许多 Flex 控制。以下是用于使用 NumericStepper 的订单数量列的一个示例,如图 3 所示:
<mx:DataGrid x="531" y="82" editable="true" dataProvider="{inventoryDB}">
<mx:columns>
<mx:DataGridColumn headerText="Product" dataField="product"/>
<mx:DataGridColumn headerText="Part #" dataField="part"/>
<mx:DataGridColumn headerText="In Stock?" dataField="inStock"/>
<mx:DataGridColumn headerText="Quantity" dataField="quantity"
itemEditor="mx.controls.NumericStepper" editorDataField="value"/>
</mx:columns>
</mx:DataGrid>
注意,editorDataField
是“value”-NumericStepper 保留控制当前值的属性。确保为 itemEditor 属性使用标准类名,否则编译器将找不到该类并将该行标为出错。
更复杂的编辑器
现在,您可能希望更进一步,这次没有现成的 Flex 控制。以下示例允许用户使用四个单独的四位数字段输入信用卡号(请参阅图 4):
以下是它需要的代码:
<mx:DataGrid x="46" y="463" editable="true" dataProvider="{accountDB}" width="302">
<mx:columns>
<mx:DataGridColumn headerText="Account" dataField="account" width="100"/>
<mx:DataGridColumn headerText="Credit Card" dataField="ccard" editorDataField="value">
<mx:itemEditor>
<mx:Component>
<mx:HBox>
<mx:Script>
<![CDATA[
public function get value() : String
{
return part1.text+part2.text+part3.text+part4.text;
}
override public function set data(value:Object):void
{
super.data = value;
part1.text = value.ccard.substr(0,4);
part2.text = value.ccard.substr(4,4);
part3.text = value.ccard.substr(8,4);
part4.text = value.ccard.substr(12,4);
}
]]>
</mx:Script>
<mx:TextInput id="part1" maxChars="4" restrict="0-9" width="40" />
<mx:TextInput id="part2" maxChars="4" restrict="0-9" width="40" />
<mx:TextInput id="part3" maxChars="4" restrict="0-9" width="40" />
<mx:TextInput id="part4" maxChars="4" restrict="0-9" width="40" />
</mx:HBox>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
这个内联 itemEditor 遵循与其他 itemEditor 相同的规则,将 editorDataField
命名为“value”。我们为这个 itemEditor 选择的组件是 HBox,它没有“value”属性。为了使这个 itemEditor 能正常运行,我们创建一个名为 value
的 getter 函数,用于返回四个连接在一起的输入字段。当用户完成单元格编辑时,DataGrid 可以调用 itemEditor 的 value 属性,它将收到合并在一起的字段。
注意 data setter 函数中的 super.data = value
。data 属性-实际上是 data getter 函数-广泛用于列表控制幕后以及框架的其他位置(更不用说您自己的代码)。如果不使用 super.data
设置数据的内部值,data getter 函数将返回一个空值,并且很可能导致应用程序崩溃。
您还会发现我覆盖了 data setter 函数。在这个函数中,我将信用卡号分到四个 TextInput 字段。这种技术用于显示待编辑数据。editorDataField
是用于检索新值的属性。
发表评论
-
Flex客户端ant同步配置
2010-09-01 12:00 1974先转网上一篇Flex支持ant的文章:Until Flex B ... -
Flex Builder中自动补全和导入的问题
2010-06-11 10:28 2401Flex Builder中自动补全和导入的问题 Wor ... -
理解 Flex itemRenderer - 第 1 部分: 内联渲染器
2010-03-31 18:04 2567理解 Flex itemRenderer - 第 1 部分: ... -
理解 Flex itemEditor-第 2 部分:编辑事件和复杂编辑器
2010-03-31 17:57 3315理解 Flex itemEditor-第 2 ... -
Flex中日期格式化
2010-03-31 17:37 1137Flex中日期格式化 var dateFormatter:D ... -
Flash Builder 4 Beta和FlexUnit下的测试驱动开发---断言方法
2010-03-31 10:19 1394Flash Builder 4 Beta和FlexUnit下的 ... -
Flex中12个常用函数
2009-11-10 14:32 1172No.1 Copy content to clipboard: ... -
Flex图片列表
2009-10-14 12:11 4133图片列表 <?xml version=" ... -
Flex+Java多文件上传
2009-10-12 17:44 4821结合网上的资料修改一下,实现了两种不同界面的多文件上传 ... -
Flex 处理数据 访问 XML 数据
2009-09-30 16:39 1811<?xml version="1.0" ... -
Flex 构建自定义组件 在 MXML 中构建组件
2009-09-30 16:31 2774在一个典型的应用程序中,并不会把所有代码都编写到一个文件中。这 ... -
Flex 调入 module 时传入参数
2009-09-30 11:25 2182主模块代码 <?xml version=" ... -
Flex + LCDS + Java 入门教程
2009-08-27 17:53 1125Flex + LCDS + Java 入门教程 见附件 -
flash中传参数
2009-02-18 15:25 1192<object width="100%&qu ... -
修改Flex中验证错误字体的大小
2008-11-13 10:05 1681修改Flex中验证错误字体的大小 <mx:Style ... -
Flex3 + Spring配置
2008-10-26 19:04 1551Flex3 + Spring配置 具体过程参见: ...
相关推荐
#### 二、理解Flex ItemEditor ##### 2.1 ItemEditor与ItemRenderer的区别 在深入探讨`itemEditor`之前,我们需要先了解它与`itemRenderer`的区别。`itemRenderer`是用于自定义列表项外观和布局的组件。相比之下,...
var column1:DataGridColumn = new DataGridColumn(); column1.headerText = "序号"; column1.dataField = "id"; var column2:DataGridColumn = new DataGridColumn(); column2.headerText = "名称"; column2.data...
private var DataGrid1:DataGrid; private function init():void{ DataGrid1 = new DataGrid(); DataGrid1.x = 10; DataGrid1.y = 30; DataGrid1.width = 250; addChild(DataGrid1); } ``` 2. 设置表头 ...
在这个“flex datagril 控件源码”示例中,我们可以深入理解DataGrid的内部工作原理和自定义扩展。 1. **DataGrid基本使用** - `DataGrid`组件通常与`ListCollectionView`或`ArrayCollection`一起使用,后者作为...
1. Flex基础概念 - Flex是一种基于标准的开发技术,用于构建具有表现力的Web应用程序,这些应用程序可以部署在多个浏览器、平台和设备上。 - MXML是Flex应用程序中用于创建用户界面的一种标记语言,它类似于HTML,...
Flex Datagrid 是Adobe Flex框架中用于展示数据集的组件,它允许开发者以表格形式展示数据,并提供多种交互功能。在Flex应用中,Datagrid经常被用于处理和展示大量的结构化数据。在标题“Flex Datagrid checkbox实现...
总结起来,理解并熟练使用 `editorDataField`、`itemEditor` 和 `itemRenderer` 是在 Flex 中有效利用 `DataGrid` 编辑功能的关键。通过它们,你可以定制单元格的编辑行为,同时确保数据的正确保存和管理。通过绑定...
Flex DataGrid组件是Adobe Flex框架中的一个重要控件,专门用于以表格形式展示数据。...总的来说,Flex DataGrid组件是Flex开发中不可或缺的一部分,对于处理结构化数据的展示和交互提供了强大的支持。
什么是OTItemEditor? OTItemEditor 是一个用于编辑 OpenTibia 服务器和工具使用的 OTB 数据文件的程序,用于将客户端使用的项目 ID 映射到服务器和工具使用的一组一致的 ID。 这是必要的,因为 CIPSoft 会在每个...
1. **README.md**: 这个文件通常包含了项目的基本信息、安装指南、使用方法以及开发者可能需要的其他重要信息。在库存管理系统中,它可能解释了系统如何运作,如何进行配置和如何运行。 2. **printer.py**: 这...
第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 1.3节.创建ActionScript项目 1.4节.在FlexBuilder中设置MXML编译器选项 1.5节.在FlexBuilder外部编译Flex...
为了使内容通顺,我们需要注意,尽管OCR扫描可能造成个别字识别错误或漏识别,理解其内容的主要意图是展示qwt提供的多种控件和图表。我们应当关注这些控件和图表的功能和应用场景,以及如何将它们集成到实际的软件...
在本部分内容中,我们将详细探讨Flex技术中如何实现一个动态生成并可编辑的DataGrid。DataGrid是一个常用的用于展示表格数据的组件,它允许用户通过直观的界面进行数据的浏览和编辑。在本例中,DataGrid组件将具备...
5. itemEditor.py:物品编辑器模块,可能用于添加、修改和删除库存物品的信息,是库房管理的核心功能之一。 6. typeManager.py:类型管理器模块,可能用于管理库存物品的类别,方便按照类别进行统计和查询。 7. ...
1. 下载并解压"D2 1.10物品修改器.rar",确保你的电脑上已经安装了《暗黑破坏神2》1.10版。 2. 备份你的游戏存档,以防万一。 3. 运行修改器程序,找到存档文件的位置。 4. 选择要修改的角色,查看或修改物品属性。 ...