【AI插件】Flex4.6 DataGrid自定义ComboBox并获取自定义ComboBox的值
来源:互联网 发布:解放台湾 知乎 编辑:程序博客网 时间:2024/04/30 01:04
最近,项目需求需要在DataGrid上动态生成GridColumn以及设置其为ComboBox,默认是为TextInput。
Flex 4.6使用s:DataGrid组件而不是mx:DataGrid,网上很多资料都是mx组件的,于是写了这篇文章。
首先,s:DataGrid的标题栏存储的对象是GridColumn。
标题栏动态添加函数
var columnsPro:GridColumn = new GridColumn();columnsPro.headerText = headerText;columnsPro.dataField = dataField;columnsPro.width = 80;contentGrid.columns.addItem(columnsPro);这里contentGrid是你的DataGrid的id号
设置列为自定义控件要用到GridColumn的itemRenderer属性。
首先,新建一个mxml组件,我们叫pointSymbol,里面代码如下
<?xml version="1.0" encoding="utf-8"?><s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="100" height="30"><fx:Script></fx:Script><fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:layout> <s:HorizontalLayout verticalAlign="middle" horizontalAlign="center"/> </s:layout> <!--<s:Image source="{data.dataField4}"/> --><mx:ComboBox id="ComBo" width="100" height="30" change="pointRankChange(event)"/> </s:GridItemRenderer>初始化显示ComboBox值需要重载方法
override public function set data(value:Object):void{super.data = value;ComBo.dataProvider = pointlabel;ComBo.selectedIndex = getArrayCollectionIndex(pointlabel,value.rank);}这里getArrayCollectionIndex是我自己定义的方法,你们可以不用考虑,value是你传入的Object对象,你可以自己定义ComboBox显示到多少位置,pointLabel是我定义的ArrayCollection对象。
当ComboBox更改时,需要你的主界面存储更改的值,就需要使用到dispatchEvent事件
protected function pointRankChange(event:ListEvent):void{// TODO Auto-generated method stubvar myEvent : ListEvent = new ListEvent("pointChange");myEvent.reason = ComBo.selectedLabel;this.parentApplication.dispatchEvent(myEvent);}这里Combo是ComboBox的id号。
在主界面监听该方法,并且把itemRender设置为当前自定义的控件。
comboboxFactory = new ClassFactory(pointSymbol);addEventListener("pointChange",ComBoBoxChange);然后
columnsPro.itemRenderer = comboboxFactory;
在主界面.mxml中,复写方法ComBoBoxChange即可。
var item:Object=contentGrid.selectedItem;var index:int=contentGrid.dataProvider.getItemIndex(item);var item:Object = contentGrid.dataProvider.getItemAt(index);if(event.type == "pointChange"){item.rank = event.reason;}
contentGrid.dataProvider.setItemAt(item,index);为了省事,我把值存到了event.reason属性中。
以上便是DataGrid自定义ComboBox并且获取其值,当然,自定义其余控件都可以。
2 0
- 【AI插件】Flex4.6 DataGrid自定义ComboBox并获取自定义ComboBox的值
- Silverligh 自定义的combobox
- 网上找到的关于自定义comboBox Column(datagrid c#)
- 自定义TexBox,自定义ComboBox
- 简单的自定义Combobox控件
- 自定义ComboBox时的注意事项
- 自定义多列的ComboBox
- 获取ComboBox的值
- 获取ComboBox的值
- Flex4之DataGrid之ComboBox渲染器
- iOS自定义ComboBox
- 任务一:自定义combobox
- 自定义组合框(ComboBox)
- ComboBox自定义下拉控件
- qml自定义Combobox
- 自定义具有自动完成功能的ComboBox
- WPF 自定义带有数据源的combobox控件
- WPF的ComboBox 数据模板自定义
- SpringBoot Maven构建工具插件
- 安卓系统资源集合
- 自己实现文本相似度算法(余弦定理)
- 4-7
- HDU 2032 杨辉三角
- 【AI插件】Flex4.6 DataGrid自定义ComboBox并获取自定义ComboBox的值
- 纠错码
- NPM 3 Beta为Windows用户带来利好消息
- Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
- 第七章 图形程序设计
- 最全前端面试问题及答案总结
- 道理你都懂,为什么你还会痛苦
- [华为机试练习题]56.求子数组的最大和
- js lodash 'date' 'nunber' 'math' methods