网上也有不少datagrid下的chexkbox全选功能的实现,但多数都要创建额外的自定义类,经过摸索此DEMO中只需定义HeadRenderer和ItemRenderer即可,而且可以很好的与grid本身的selectedItems相结合,通用性较高,代码如下:
CheckBoxHeaderRenderer
<?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" clipAndEnableScrolling="true"> <fx:Script> <![CDATA[ import mx.collections.IList; import mx.controls.Alert; import spark.skins.spark.DefaultGridHeaderRenderer; protected function chkAllChangeHandler():void { if(!chkAll.selected){ grid.selectedIndex=-1; }else{ var n:int = grid.dataProvider.length; var arr:Array = []; for (var i:int = i; i < n; i++) arr.push(i); grid.selectedIndices = Vector.<int>(arr); } } override public function prepare(hasBeenRecycled:Boolean):void { var items:Vector.<Object> = grid.selectedItems; var numItems:int = items ? items.length : 0; chkAll.selected = grid.dataProvider.length == numItems; grid.addEventListener("selectionChange", selectionChangeHandler); grid.addEventListener("valueCommit", selectionChangeHandler); } override public function discard(willBeRecycled:Boolean):void { grid.removeEventListener("selectionChange", selectionChangeHandler); grid.removeEventListener("valueCommit", selectionChangeHandler); } private function selectionChangeHandler(event:Event):void { var items:Vector.<Object> = grid.selectedItems; var numItems:int = items ? items.length : 0; chkAll.selected = grid.dataProvider.length == numItems; } ]]> </fx:Script> <s:CheckBox id="chkAll" horizontalCenter="0" verticalCenter="0" change="chkAllChangeHandler()"/> </s:GridItemRenderer>
CheckBoxItemRenderer
<?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" clipAndEnableScrolling="true" xmlns:local="*"> <fx:Script> <![CDATA[ private var bool:Boolean=false; override public function prepare(hasBeenRecycled:Boolean):void { chk.selected = grid.selectionContainsIndex(rowIndex); } protected function chkMouseUpHandler(event:MouseEvent):void { if(bool){ grid.addSelectedIndex(rowIndex); }else{ grid.removeSelectedIndex(rowIndex); } } protected function chkMouseDownHandler(event:MouseEvent):void { bool=!chk.selected; event.stopImmediatePropagation(); } ]]> </fx:Script> <s:CheckBox id="chk" horizontalCenter="0" verticalCenter="0" mouseUp="chkMouseUpHandler(event)" mouseDown="chkMouseDownHandler(event)"/> </s:GridItemRenderer>
test
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:DataGrid x="0" y="0" width="100%" height="100%" requestedRowCount="4" selectionMode="multipleRows"> <s:columns> <s:ArrayList> <s:GridColumn width="30" dataField="dataField1" headerRenderer="CheckBoxHeaderRenderer" itemRenderer="CheckBoxItemRenderer" resizable="false" sortable="false"></s:GridColumn> <s:GridColumn dataField="dataField2" headerText="列 2"></s:GridColumn> <s:GridColumn dataField="dataField3" headerText="列 3"></s:GridColumn> </s:ArrayList> </s:columns> <s:typicalItem> <fx:Object dataField1="示例数据" dataField2="示例数据" dataField3="示例数据"></fx:Object> </s:typicalItem> <s:ArrayList> <fx:Object dataField1="数据1" dataField2="数据1" dataField3="数据1"></fx:Object> <fx:Object dataField1="数据2" dataField2="数据2" dataField3="数据2"></fx:Object> <fx:Object dataField1="数据3" dataField2="数据3" dataField3="数据3"></fx:Object> <fx:Object dataField1="数据4" dataField2="数据4" dataField3="数据4"></fx:Object> </s:ArrayList> </s:DataGrid> </s:Application>
相关推荐
判断DatagridView里面的CheckBox是否选中,如果选中,启用另一控件。如果取消选中,则不启用。以及全选和反选的代码。
flex通过httpService读取xml数据到datagird中,通过读取远程URL的XML数据(这里保存到本地),保存到ArrayCollection中,然后在将ArrayCollection绑定到datagird上 环境:flex3.0 可直接运行
FLEX中datagird的应用学习可以看看api文档了
NULL 博文链接:https://chenhailong.iteye.com/blog/1929075
Rj_datagird.swc这个文件是对源代码进行的封装,在项目中我们可以直接引用此文件即可, 唯一使用要求,必须确保提供的数据源每行中有初始化是否选择状态[状态名:isSelect] 形如:{"isSelect":false,"dataName":...
FLEX DATA GRID 分页的代码,上传上来给大家参考参考
flex支持拖拽的DataGrid,如果去查api来置一些属性将会比较麻烦,这个DataGrid可以获取拖拽的内容,这是一个application,可以直接运行
[DataGird]如何截取过长的字符串
此程序源码是让datagird实现鼠标滚轮功能,这个程序也是学习mdb数据库的好例子。
c#.net Data导出DataGird 源码
可用的datagird打印类。记住datagird要添加样式,调用列子如下: DataGridPrintDocument dgp=new DataGridPrintDocument(dataGrid1,"用户列表",16); //string[] uplinestr={"呵呵,hehe","xixi"}; ...
datagird绑定 .net里面的 就是个过程
C#中 datagird增改删的小例子 .NET 是编辑成功的源码
struts1.3+spring2+Hibernate json,easyui datagird 学习easyui 做的一个小例子
} .datagird tr th{background-color:#191970; font-size:14px;} .datagrid tr th, .datagrid tr td{border:1px solid #ccc; border-collapse:collapse;} /* 选中行样式 */ .table-row-selected{background:#fff
使用Unity制作的轮播图,主要通过ScrollRect组件,拖拽事件等实现
主要介绍了jQuery easyui datagird编辑行删除行功能的实现代码,需要的朋友可以参考下
在winCE 5.0 下 开发 datagrid 实现在datagrid 上添加 button checkbox
WpfDataGrid示例代码 分组,过滤,排序,样式