`
lipbb
  • 浏览: 68666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DataGrid中用CheckBox实现全选功能

阅读更多
在表格的操作中,经常有这种需求:某一列用来做选择,在标题上的有全选功能。

看下示例


代码如下:
Application:
<?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">
	
	<s:layout>
		<s:VerticalLayout paddingTop="5" paddingBottom="5" paddingLeft="5" paddingRight="5" gap="5" 
						  horizontalAlign="center" verticalAlign="middle"/>
	</s:layout>
	
	
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.events.FlexEvent;
			
			import vos.TestVO;
			[Bindable]
			private var dp:ArrayCollection;
			
			
			private function createData():void
			{
				dp = new ArrayCollection();
				for (var i:int = 0; i < 10; i++) 
				{
					var t:TestVO = new TestVO();
					t.id = String(i);
					t.label = "label" + i;
					t.icon = "assets/icons/" + i + ".png";
					t.selected = (Math.random() > .5) ? true : false;
					
					dp.addItem(t);
				}
				
			}
			
			private function deleteData():void
			{
				for (var i:int = dp.length - 1; i >= 0; i--) 
				{
					var t:TestVO = dp.getItemAt(i) as TestVO;
					if(t.selected)
						dp.removeItemAt(i);
				}
				
			}
			
			public function selectAll(event:MouseEvent):void
			{
				var cb:mx.controls.CheckBox = event.currentTarget as mx.controls.CheckBox;
				
				if(!dp)
				{
					//还没数据的时候,你就别选中了,没用
					cb.selected = false;
					return;
				}
				
				for each (var t:TestVO in dp) 
				{
					t.selected = cb.selected;
				}
			}
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<mx:DataGrid id="dg" width="400" height="300" dataProvider="{dp}">
		<mx:columns>
			<mx:DataGridColumn width="20" sortable="false">
				<mx:headerRenderer>
					<fx:Component>
						<mx:CheckBox click="outerDocument.selectAll(event)"/>
					</fx:Component>
				</mx:headerRenderer>
				<mx:itemRenderer>
					<fx:Component>
						<mx:CheckBox selected="@{data.selected}"/>
					</fx:Component>
				</mx:itemRenderer>
			</mx:DataGridColumn>
			<mx:DataGridColumn dataField="label"/>
			<mx:DataGridColumn dataField="icon"/>
		</mx:columns>
	</mx:DataGrid>
	<s:HGroup>
		<s:Button label="create data" click="createData()"/>
		<s:Button label="delete selected data" click="deleteData()"/>
	</s:HGroup>
</s:Application>


TestVO:
package vos
{
	[Bindable]
	public class TestVO
	{
		public function TestVO()
		{
		}
		
		public var id:String;
		public var label:String;
		public var icon:String;
		
		[Transient]
		public var selected:Boolean = false;
	}
}

几个可能有疑问的地方:
  • selected="@{data.selected}" "@"的作用是双向绑定,当data.selected改变时,checkbox的selected也随之改变,反之亦然。
  • [Transient] 作用是指定接下来的字段在序列化的时候可以忽略。比如与后台交互的时候,后台vo不需要selected这个字段,加上它就行了(不加可能会导致警告)。
  • 例子里的CheckBox没有居中,如果要让它居中可以给它包上一个居中的容器。
2
1
分享到:
评论
1 楼 blacklong 2013-03-29  
good,多谢

相关推荐

    在DataGrid中使用CheckBox,实现全选功能

    这篇博客“在DataGrid中使用CheckBox,实现全选功能”详细介绍了如何实现这一需求。 首先,我们需要在DataGrid的列定义中添加一个CheckBox列。在WPF中,可以使用DataGridTemplateColumn来自定义列模板,将CheckBox...

    flex datagrid 嵌套checkbox实现全选

    3. **全选功能实现**: 全选功能通常由一个独立的复选框控制,当用户点击这个复选框时,所有DataGrid中的子复选框都会被选中或取消选中。实现这一功能需要监听全选复选框的事件,然后遍历DataGrid的所有行,设置...

    WPF-DataGrid中CheckBox实现全选与非全选

    本教程将详细讲解如何在`WPF DataGrid`中实现全选和非全选功能。 首先,我们需要在`DataGrid`的列定义中添加一个复选框列,这可以通过创建一个自定义的`DataGridTemplateColumn`来实现。复选框通常绑定到每一行的...

    DataGrid和AdvancedDataGrid CheckBox全选功能

    在本文中,我们将深入探讨两种在Flex或Adobe AIR应用程序中常用的组件——`DataGrid`和`AdvancedDataGrid`,特别是关于它们的CheckBox全选功能。`DataGrid`和`AdvancedDataGrid`是Flex中用于展示数据集合的强大工具...

    Flex中DataGrid内嵌CheckBox的全选反选和防止选择状态错乱实现方法

    本文将详细探讨如何在Flex的DataGrid中实现CheckBox的全选和反选功能,以及如何防止选择状态错乱的问题。 首先,我们需要创建一个自定义的DataGrid列类,这个类将扩展mx.controls.gridClasses.GridColumn,并且包含...

    flex在DataGrid中实现checkbox全选或取消

    本文将深入探讨如何在Flex中的DataGrid组件中实现复选框的全选与取消全选功能,这对于数据操作和用户交互至关重要。 在Flex的DataGrid组件中,我们通常会遇到这样的需求:当用户需要对多条记录进行批量操作时,如...

    flex Datagrid checkbox全选

    本文将详细讲解如何实现Flex Datagrid中checkbox的全选功能。 首先,我们要了解Flex Datagrid的基本结构。Datagrid由一系列DataGridColumn组成,每个列可以自定义渲染器来呈现不同类型的数据显示,例如文本、图片...

    WPF在dataGrid中添加CheckBox支持单选,多选,全选功能

    项目中用到DataGrid, 需要在第一列添加checkbox, 可以多选、全选。 其中涉及的概念DataTemplate, DataGridCellStyle, DataGridCellControlTemplate,Binding, OnPropertyChanged等。

    winform DataGridView表头带CheckBox全选

    在这个特定的场景中,我们关注的是如何在`DataGridView`的表头添加一个`CheckBox`,以便实现全选和全不选的功能。这将大大提升用户体验,使得用户可以快速地对所有行进行操作,如批量删除、更新等。 首先,我们需要...

    三种方式实现checkbox全选,反选

    在实际项目中,这三种方法都可以有效地实现Checkbox全选和反选功能。选择哪种方法主要取决于项目需求、性能考虑以及开发者的偏好。对于小型项目,前两种纯JavaScript的方法足够;对于大型项目,结合服务器端处理可能...

    DataGrid和AdvancedDataGrid CheckBox全选功能1.1

    在本文中,我们将深入探讨如何在Flex中实现DataGrid和AdvancedDataGrid组件的CheckBox全选功能。这个功能在数据展示和交互式操作中非常常见,它允许用户通过一个主CheckBox来选择或取消选择所有行数据。 首先,我们...

    easyui checkbox +全选

    标题 "easyui checkbox +全选" 指的是在网页界面设计中使用 EasyUI 框架实现复选框(checkbox)以及全选功能。EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列预定义的 CSS 样式和 JavaScript 组件,帮助...

    WPF CheckBox全选、反选比较通用

    为了实现全选功能,我们需要监听全选CheckBox的IsChecked属性改变事件。当用户点击全选CheckBox时,所有列表项的IsSelected属性应同步更新。这可以通过后台代码实现,如: ```csharp private void SelectAll...

    VB.NET为DataGridView添加CheckBox实现全选全不选复选框

    Datagridview控件没有全选或取消全选的复选框,本资源用VB2015通过扩展DataGridViewColumnHeaderCell类,在列头绘制一个复选框checkbox控件,通过定义checkbox鼠标单击事件来实现行的全选或取消全选。checkbox还可以...

    Flex DataGrid CheckBox 一个简单的全选

    四、全选功能实现 全选功能是允许用户一次性选择所有行。在Flex中,可以通过监听CheckBox的change事件,当全选CheckBox被勾选时,遍历所有行并设置其对应的CheckBox为选中状态。反之,当全选CheckBox取消选中时,将...

    WPF中DataGrid里面的Checkbox实现单选

    WPF中DataGrid里面的Checkbox实现单选关键代码, 文档里面的代码复制粘贴即可实现!本人也是项目需要写的一个功能11行代码实现此功能! 希望可以帮助到你们!

    silverlight 5 DataGrid ColumnHeader CheckBox全选样式

    最近懒 想在网上找个DataGrid ColumnHeader里面添加CheckBox全选,但是网上没找到,于是就自己写了一个这样的样式,具体功能实现你们就自己去写吧。 分享给大家。 有什么问题可以直接加WPF/Silverlight 找晴天就...

    DataGridView标头CheckBox全选反选

    而在这个特定的场景中,我们需要实现一个增强的功能:在`DataGridView`的列头添加一个`CheckBox`,通过这个`CheckBox`可以实现所有行中对应复选框的全选或反选操作。这个功能在数据管理界面中十分常见,例如在批量...

    在DataGrid中进行复选框的操作(全选和取消)

    在某些应用场景下,我们可能需要在`DataGrid`的每一行添加复选框,以便用户可以多选操作,如全选和取消全选功能。下面我们将详细探讨如何实现这一功能。 首先,我们需要在`DataGrid`中添加复选框列。这可以通过...

Global site tag (gtag.js) - Google Analytics