`

v4_05 创建项目渲染器和项目编辑器

    博客分类:
  • flex
阅读更多
v4_05 Creating item renderers and item editors 创建项目渲染器和项目编辑器
 
ex4-05
这部分主要讲
把有关项目渲染器的知识带到DataGrid控件中,并学习如何创建项目渲染器和项目编辑器
及如何创建渲染器和编辑器作为下拉式,内联式和组件形式的实现
如何使用渲染器里面的Spark组件
如何在DataGrid控件里的一个项目上处理一个点击事件
 
 
三种方式来实现项目渲染器和项目编辑器
下拉式  内联式  组件形式
 
 
下拉式
为实现一个下拉式的项目渲染器,需要直接在一个DataGridColumn实例中的iterRenderer或itemEditor属性中引用一个组件类文件
可以使用editorDataField属性,将列中 的数据绑定到下拉式组件中的不同属性上
如果要为项目渲染器使用项目编辑器,设置rendererIsEditor属性为true
 
1.首先给DataGrid加上editable=true属性
Employee Name,Hire Dateeditable="false",在Vacation中加上项目编辑器
 
<mx:DataGrid dataProvider="{employeeList}"
width="300"
editable="true">

<mx:columns>
<mx:DataGridColumn labelFunction="employeeName"
headerText="Employee Name"
width="112"
editable="false"/>
<mx:DataGridColumn dataField="hireDate"
headerText="Hire Date"
labelFunction="dateFormat"
editable="false"/>
<mx:DataGridColumn dataField="vacationEligibility"
headerText="Vacation"
itemEditor="mx.controls.NumericStepper"
editorDataField="value"/>
</mx:columns>

</mx:DataGrid> 
 
 
2.让NumericStepper总是显示
这里使用itemRenderer,并且rendererIsEditor="true"
<mx:DataGrid dataProvider="{employeeList}"
width="300"
editable="true">

<mx:columns>
<mx:DataGridColumn labelFunction="employeeName"
headerText="Employee Name"
width="112"
editable="false"/>
<mx:DataGridColumn dataField="hireDate"
headerText="Hire Date"
labelFunction="dateFormat"
editable="false"/>
<mx:DataGridColumn dataField="vacationEligibility"
headerText="Vacation"
itemRenderer="mx.controls.NumericStepper"
rendererIsEditor="true"
editorDataField="value"/>
</mx:columns>

</mx:DataGrid> 
 
 
 
3.上面的例子中下拉控件数字大小是无法规定上限的
因为属性无法传入到<!--WizRtf2Html Charset=0 -->NumericStepper 中去
可以在itemRenderer使用Component来解决设置NumericStepper 属性的问题
<mx:DataGridColumn dataField="vacationEligibility"
headerText="Vacation"
rendererIsEditor="true">
<mx:itemRenderer>
<fx:Component>
<mx:NumericStepper minimum="2" maximum="26"/>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn> 
  
4.<!--WizRtf2Html Charset=0 -->Employee Name 是创建一个<!--WizRtf2Html Charset=0 -->itemRenderer
EmployeeItemRenderer,注意创建的时间,选择MXML项呈示器
<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
focusEnabled="true">

<s:BorderContainer backgroundColor="#cccccc">

<s:layout>
<s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
</s:layout>

<s:Label text="{data.firstName} {data.lastName}"/>

<mx:Image source="images/{data.id}.jpg"/>

</s:BorderContainer>

</s:MXDataGridItemRenderer> 
 
 
然后在主应用程序中引用
<mx:columns>
<mx:DataGridColumn itemRenderer="components.EmployeeItemRenderer"
headerText="Employee Name"
width="112"
editable="false"/>
<mx:DataGridColumn dataField="hireDate"
headerText="Hire Date"
labelFunction="dateFormat"
editable="false"/>
<mx:DataGridColumn dataField="vacationEligibility"
headerText="Vacation"
rendererIsEditor="true">
<mx:itemRenderer>
<fx:Component>
<mx:NumericStepper minimum="2" maximum="26"/>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>

</mx:columns> 
 
 
 
5.vacation的高度也变这么高了
怎么处理呢?在NumericStepper 加一层MXDataGridItemRenderer,通过该类,可以将 Spark 项呈示器体系结构与 MX DataGrid 控件一起使用。
<mx:itemRenderer>
<fx:Component>
<s:MXDataGridItemRenderer>
<mx:NumericStepper minimum="2" maximum="26"/>
</s:MXDataGridItemRenderer>
</fx:Component>
</mx:itemRenderer> 
 
 
6.但是上面的vacation的值出问题了,都是最小值2了
因为使用MXDataGridItemRenderer之后,
它就是一个独立的components,所以我们要为它提供数据
注意,这里把NumericStepper 使用了Spark组件
<mx:itemRenderer>
<fx:Component>
<s:MXDataGridItemRenderer>
<s:NumericStepper minimum="2" maximum="26" value="{data.vacationEligibility}"/>
</s:MXDataGridItemRenderer>
</fx:Component>
</mx:itemRenderer> 
 
 
7.点击事件
DataGrid 写上itemClick事件,并处理它
<mx:DataGrid dataProvider="{employeeList}"
width="300"
editable="true"
itemClick="datagrid1_itemClickHandler(event)"> 
 
 
8.最后说下HGroup
HGroup 容器是使用 HorizontalLayout 类的 Group 容器的一个实例
就是一个不用写layout的Group
分享到:
评论

相关推荐

    CATIA 实时渲染

    - **实时渲染界面**:CATIA的实时渲染界面包括多个工具栏,如材料库工具栏、场景编辑器工具栏、动画工具栏等,提供了丰富的功能按钮,便于用户快速访问和调整渲染设置。 - **快速参考与定制**:软件还提供了快速参考...

    Unity 4.7.2 Pro patch For mac

    10. **Pro版本特性**:相比免费版,Unity Pro通常提供更高的渲染质量、更大的项目存储空间、优先的技术支持和更少的Unity标识水印,适合专业开发者和商业项目。 在提供的压缩包文件中,“Unity_v4.x.ulf”可能是...

    fullcalendar-4.4.0.zip

    1. **全历核心功能**:全历能够展示日视图、周视图、月视图和Agenda视图等多种时间轴布局,支持拖放操作以调整事件的时间和位置,同时提供事件的创建、编辑和删除功能。 2. **事件数据源**:全历可以通过JSON、Ajax...

    MAC版(4.2.2)

    通常,这样的文件会包含所有必要的组件,如编辑器、运行时环境和必要的库,以便在Mac上顺利运行和开发Unity项目。 在MAC版Unity 4.2.2中,开发者可以享受到一系列功能和改进。例如,图形渲染可能得到了提升,支持...

    fastreport文档

    - **易用性**:通过直观的可视化设计器,用户可以快速创建和编辑报表。 - **灵活性**:支持多种数据源,包括数据库、XML、JSON等,且可以编写自定义脚本来处理复杂的数据逻辑。 - **高性能**:FastReport拥有高效的...

    react_recipelog:仅限前端的Web应用程序,用于创建配方日志。 在Redux上基于React构建

    在`react_recipelog`项目中,React被用来构建各个页面和交互元素,如添加、编辑和查看食谱。 **Redux状态管理** Redux是React应用中广泛采用的状态管理库,它提供了一个全局的store来集中管理应用的所有状态。在`...

    Babylonjs一个用HTML5和WebGL构建3D游戏的完整JavaScript框架

    7. **工具和扩展**:Babylon.js生态系统包含了多个工具和扩展,如场景编辑器、模型转换工具、预处理器等,帮助开发者更高效地工作。 8. **学习资源**:Babylon.js社区提供了丰富的文档、教程和示例代码,方便开发者...

    arcgis api for js v3.29 & sdk

    3. 工具与资源:SDK包含了开发工具和辅助资源,如地图样式编辑器、调试工具等,帮助开发者提高开发效率。 4. 框架集成:SDK提供了与常见前端框架(如React、Vue、Angular)的集成指南,使得API可以无缝融入现代Web...

    普通USB摄像头开发

    在编写视频捕捉程序时,我们需要创建一个Filter Graph,它由不同的过滤器组成,包括捕获源过滤器(通常由摄像头驱动提供)、视频渲染过滤器等。通过调用DirectShow的API,如`CoCreateInstance`创建过滤器,`Graph...

    三维设计catia基础教程

    - **2.2.6 特征库编辑器工具栏(Feature Dictionary Editor Toolbar)** - 管理特征库,用于快速调用预定义的特征。 - **2.2.7 知识工程工具栏(Knowledgeware Toolbar)** - 应用参数化设计和规则驱动设计。 ...

    Make-and-Release-in-Godot

    它提供了一个内置的可视化编辑器,使得游戏逻辑的构建无需编写过多代码,但同时也支持使用GDScript编程语言进行更高级的定制。 2. **版本迭代**:从v3.2到v4的升级,Godot引入了大量改进和新特性。例如,v4版本引入...

    grabberds-开源

    2. **创建Filter Graph**:使用grabberds的接口创建一个包含视频源、解码器(如果需要)和帧捕获组件的过滤器图。 3. **连接组件**:将各个过滤器通过接口连接起来,形成数据流的通路。 4. **启动捕获**:调用相应...

    UltraWinChart NA2004 Vol2

    3. **设计时属性编辑器(Design-Time Property Editors)**: - **定义**:提供了直观的界面供开发者调整图表的各个细节属性。 - **应用场景**:适合快速原型设计阶段以及UI定制需求较高的项目。 - **优势**:...

Global site tag (gtag.js) - Google Analytics