嵌入checkbox数据丢失问题
2012-03-19 09:59
330 查看
嵌入checkbox数据丢失问题
为了综合应用需求,将checkbox嵌入datagrid中作为一列,这个显示效果之前已经提到过,但是随之而来的是另一个问题,datagrid使用滚动条查看数据时,checkbox的值会变化,出现很诡异的现象(多选或少选),总之不能确保勾选的是用户想要选择的记录。为了解决这个问题,在网上荡
了好些天,看了资料,还有头的帮助,最后加上小细节的纠结,今天总算解决了,也不白费加班一场。
问题思路是新建一个mxml里面为VBox和一个CheckBox控件,并有一个共有变量,记录checkbox的选择状态;很好理解VBox作为
DataGridColumn的itemRenderer属性值,CheckBox重载了一些函数,编写其change事件,和set、get函数。再在
需要嵌入checkbox的含有datagrid的mxml中设置datagrid的属性。不多说,贴些代码辅助说明下:
(1)DGCheckBoxEditor.mxml文件
<?xml version="1.0"?>
<mx:VBox horizontalAlign="center" xmlns:mx="http://www.adobe.com/2006/mxml"
implements="mx.controls.listClasses.IDropInListItemRenderer,mx.managers.IFocusManagerComponent">
<mx:Script>
<![CDATA[
import mx.controls.listClasses.ListData;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
import mx.controls.dataGridClasses.DataGridItemRenderer;
import mx.events.FlexEvent;
private var _listData:DataGridListData;
public var cbSelected:Boolean;
override public function drawFocus(draw:Boolean):void {
chxBox.setFocus();
}
[Bindable]
override public function set data(value:Object):void{
super.data = value;
chxBox.selected=data[_listData.dataField];
}
override public function get data():Object {
return super.data;
}
public function get listData():BaseListData
{
return _listData;
}
public function set listData(value:BaseListData):void
{
_listData = DataGridListData(value);
}
]]>
</mx:Script>
<mx:CheckBox id="chxBox" label=""
change="cbSelected=chxBox.selected"/>
</mx:VBox>
(2)运用checbox的mxml文件中datagrid的设置:
<mx:DataGrid id="dgLayer" dataProvider="{infoAC}" editable="true" height="120">
<mx:columns>
<mx:DataGridColumn width="50" itemRenderer="DGCheckBoxEditor" rendererIsEditor="true" editorDataField="cbSelected" textAlign="center"
dataField="check" headerText="选择" sortable="false">
</mx:DataGridColumn>
<mx:DataGridColumn width="60"
textAlign="center" dataField="id" headerText="索引号" sortable="false"
editable="false"/>
<mx:DataGridColumn width="240" textAlign="center" dataField="name"
headerText="图层名" sortable="false" editable="false"/>
</mx:columns>
</mx:DataGrid>
(3)最后需要补充的是,DGCheckBoxEditor文件放在src的根目录下。
注:implements为隐藏属性,用于设置接口。
相关文章推荐
- PullToRefreshListView 内嵌checkbox 数据丢失问题
- PullToRefreshListView 内嵌checkbox 数据丢失问题
- 开发笔记(二):查找数据丢失问题
- C# 读取EXCEL文件出现数据丢失问题
- 记一次JPA查询分页导致的数据丢失问题
- double类型数据做加和操作时会丢失精度问题处理
- 解决使用webbrowser请求url时数据传递丢失问题
- redis数据丢失问题的分析
- 淘宝物流MySQL slave复制数据丢失问题的个人整理
- Missing e浏览器扩展功能或引起数据丢失、隐私暴露等问题
- Swift cell滑动数据丢失,图片重叠,cell重用问题的解决
- c#调用java写的webservice数据丢失有关问题
- 关于Hibernate设置一对多关系时更新一方数据时多方外键丢失问题解决
- 记一次kafka数据丢失问题的排查
- 解决Android横竖屏切换数据丢失问题
- STM32 串口发数据丢失问题
- 数据丢失精确度的问题的解决
- 关于读取Oracle数据时间丢失问题
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法 续集
- 在datagrid里面嵌入checkbox问题