<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="vertical" horizontalAlign="center"
xmlns:mx="
http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
import mx.events.DataGridEventReason;
import mx.controls.NumericStepper;
import mx.controls.TextInput;
import mx.core.UIComponent;
import mx.containers.HBox;
import mx.controls.DataGrid;
import mx.events.DataGridEvent;
// 屏蔽第一列的编辑事件
private function onItemEditBeginning(event:DataGridEvent):void{
if(event.columnIndex==0)
event.preventDefault();
}
private function onItemEditBegin(event:DataGridEvent):void{
// 阻止默认侦听器执行
event.preventDefault();
var dg:DataGrid = event.currentTarget as DataGrid;
// 创建项目编辑器实例
dg.createItemEditor(event.columnIndex,event.rowIndex);
var editorInstance:UIComponent = dg.itemEditorInstance as UIComponent;
var tiLabel:TextInput = editorInstance.getChildAt(0) as TextInput;
tiLabel.percentWidth = 50;
tiLabel.text = dg.editedItemRenderer.data.label;
var numStepper:NumericStepper = editorInstance.getChildAt(1) as NumericStepper;
numStepper.percentWidth = 50;
numStepper.value = dg.editedItemRenderer.data.price;
}
private function onItemEditEnd(event:DataGridEvent):void{
if (event.reason == DataGridEventReason.CANCELLED){
// 如果取消编辑,不更新数据
return;
}
// 阻止默认侦听器执行
event.preventDefault();
var dg:DataGrid = event.currentTarget as DataGrid;
var editorInstance:UIComponent = dg.itemEditorInstance as UIComponent;
var tiLabel:TextInput = editorInstance.getChildAt(0) as TextInput;
var numStepper:NumericStepper = editorInstance.getChildAt(1) as NumericStepper;
var newLabel:String = tiLabel.text;
var newPrice:Number = numStepper.value;
// 取得旧数据
var oldLabel:String = dg.editedItemRenderer.data.label;
var oldPrice:Number = dg.editedItemRenderer.data.price;
// 判断label是否为空,price是否小于50
if(newLabel=="" || newPrice<50){
//销毁项目编辑器并返回,不更新数据
dg.destroyItemEditor();
return;
}
// 为项目渲染器设置新数据
dg.editedItemRenderer.data.label = newLabel;
dg.editedItemRenderer.data.price = newPrice;
dg.destroyItemEditor();
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="vertical" horizontalAlign="center"
xmlns:mx="
http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
import custom.MyEditor;
import mx.events.DataGridEventReason;
import mx.controls.NumericStepper;
import mx.controls.TextInput;
import mx.controls.DataGrid;
import mx.events.DataGridEvent;
// 屏蔽第一列的编辑事件
private function onItemEditBeginning(event:DataGridEvent):void{
if(event.columnIndex==0)
event.preventDefault();
}
private function onItemEditEnd(event:DataGridEvent):void{
if (event.reason == DataGridEventReason.CANCELLED){
return;
}
event.preventDefault();
var dg:DataGrid = event.currentTarget as DataGrid;
var editorInstance:MyEditor = dg.itemEditorInstance as MyEditor; // 取得项目编辑器中的新数据
var newLabel:String = editorInstance.newLabel
var newPrice:Number = editorInstance.newPrice
// 检查数据是否符合要求
if(newLabel=="" || newPrice<50){
// 销毁项目编辑器并返回,不更新数据
dg.destroyItemEditor();
return;
}
// 为项目渲染器设置新数据
dg.editedItemRenderer.data.label = newLabel;
dg.editedItemRenderer.data.price = newPrice;
dg.destroyItemEditor();
}
]]>
</mx:Script>
<mx:Model id="myData">
<items>
<item>
<icon>assets/icon1.png</icon>
<label>Item1</label>
<price>60.0</price>
</item>
<item>
<icon>assets/icon2.png</icon>
<label>Item2</label>
<price>75.0</price>
</item>
<item>
<icon>assets/icon3.png</icon>
<label>Item3</label>
<price>60.0</price>
</item>
<item>
<icon>assets/icon4.png</icon>
<label>Item4</label>
<price>70.0</price>
</item>
</items>
</mx:Model>
<mx:DataGrid width="300" dataProvider="{myData.item}" editable="true"
itemEditBeginning="onItemEditBeginning(event)"
itemEditEnd="onItemEditEnd(event)">
<mx:columns>
<mx:DataGridColumn itemRenderer="mx.controls.Image" dataField="icon" width="100"/>
<mx:DataGridColumn headerText="price" itemEditor="custom.MyEditor"
editorXOffset="5" editorYOffset="0" editorHeightOffset="40">
<!-- 在项目渲染器中使用Label组件显示label和price值 -->
<mx:itemRenderer>
<mx:Component>
<mx:Label text="{data.label}:${data.price}"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
</mx:Application>
相关推荐
### Flex中的ItemEditor详解 #### 一、引言 ...在接下来的文章中,我们将继续探讨更多关于`itemEditor`的高级主题,包括复杂的编辑逻辑、验证机制以及如何利用`itemRenderer`作为`itemEditor`等。
在本篇文章中,我们将深入探讨如何在 `DataGrid` 中应用编辑功能,包括 `editorDataField`、`itemEditor` 和 `itemRenderer` 的使用,以及如何有效地管理和保存编辑后的数据。 首先,`DataGrid` 的编辑功能允许用户...
- 在ActionScript中,可以通过DataGridColumn对象创建列,并且可以动态地添加或修改列。 6. 编辑器与渲染器(itemEditor/itemRenderer) - itemEditor属性用于指定在DataGrid中编辑数据时使用的控件,例如输入框、...
你可以使用 `itemEditor` 和 `itemRenderer` 自定义单元格的显示和编辑行为。 6. 拖拽操作 虽然没有在描述中明确提到,但 DataGrid 支持拖放功能,允许用户重新排序列或移动数据项。 通过这些基本操作,你可以...
Flex Datagrid 是Adobe Flex框架中用于展示数据集的组件,它允许开发者以表格形式展示数据,并提供多种交互功能。在Flex应用中,Datagrid经常被用于处理和展示大量的结构化数据。在标题“Flex Datagrid checkbox实现...
Flex DataGrid控件是Adobe Flex框架中的一个核心组件,用于展示和操作大量数据。它提供了一种高效且灵活的方式来显示表格形式的数据,并支持多种交互功能,如排序、筛选、分页以及对数据进行增删改查操作。在这个...
Flex DataGrid组件是Adobe Flex框架中的一个重要控件,专门用于以表格形式展示数据。它具有丰富的功能和灵活性,常用于企业级应用中显示多属性对象的列表。DataGrid组件不仅支持基本的表格布局,还提供了排序、编辑...
在Flex开发中,`DataGrid`是一个非常重要的UI组件,它能够以表格形式展示数据集合,支持数据的排序、筛选等功能。本文将详细介绍Flex中`DataGrid`控件的使用方法,包括通过MXML与ActionScript的不同实现方式,并给出...
flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...
在本部分内容中,我们将详细探讨Flex技术中如何实现一个动态生成并可编辑的DataGrid。DataGrid是一个常用的用于展示表格数据的组件,它允许用户通过直观的界面进行数据的浏览和编辑。在本例中,DataGrid组件将具备...
您可以使用 Visual Studio 2010 或更高版本中提供的 otitemeditor.sln 构建项目。 只需运行 ./build-linux.sh 即可编译。 它使用 Mono 包中的 xbuild 。 如果有人可以为其他平台提供编译说明,那就
"D2 1.10物品修改器.rar" 是针对该游戏1.10版本的一个物品修改工具,主要用于调整游戏中角色的装备、道具等资源,以提升游戏体验或进行测试。 在《暗黑破坏神2》中,物品是游戏的核心元素之一,包括武器、防具、...
10. constants.py:常量定义文件,存储系统中固定不变的参数或配置,有利于代码的维护和更新。 三、系统设计与实现 1. 数据管理:系统可能使用SQLite数据库存储库存信息,实现数据持久化,同时通过Python的sqlite3...
在库存管理中,定期打印或展示库存状态和交易历史是必要的。 3. **logManager.py**: 这可能是日志管理模块,负责记录系统操作、错误信息以及用户活动。良好的日志管理对于跟踪系统问题、分析用户行为和优化系统...
这些例子为开发者提供了一个很好的起点,通过观察和运行这些例子,开发者可以更快地掌握qwt的各种控件的使用方法,并将其应用到自己的项目中。 为了使内容通顺,我们需要注意,尽管OCR扫描可能造成个别字识别错误或...