该文中提供在datagrid中实现全部所有列的checkbox的问题.
两个DataGrid使用同一个数据源,左边提供选择等操作,右边会即时更新。我的实现原理很简单,我使用可派发事件的引用对象作为数据源数据类型。
所有源码:
DataGrid_Checkbox.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:dataGrid="sban.flexStudy.dataGrid.*">
<mx:Script>
<![CDATA[
[Bindable]
private var data_myDataGrid : XMLList = <></>;
private function headerClickHandler(event : Event) : void
{
for each(var xml : XML in data_myDataGrid)
{
xml.@selected = String(event.currentTarget.selected);
}
}
]]>
</mx:Script>
<mx:creationComplete>
<![CDATA[
for(var j : uint=0; j<10; j++)
{
data_myDataGrid += <item label={"Label"+j} data={"Data"+j} selected="false" />
}
]]>
</mx:creationComplete>
<mx:DataGrid dataProvider="{data_myDataGrid}" x="10" y="10">
<mx:columns>
<mx:DataGridColumn dataField="@label" headerText="Label" />
<mx:DataGridColumn dataField="@data" headerText="Data" />
<dataGrid:CheckBoxHeaderColumn headerClick="headerClickHandler(event)"
dataField="@selected" headerText="Select"
itemRenderer="sban.flexStudy.dataGrid.CheckBoxItemDataRenderer"
headerRenderer="sban.flexStudy.dataGrid.CheckBoxHeaderRenderer" />
</mx:columns>
</mx:DataGrid>
<mx:DataGrid dataProvider="{data_myDataGrid}" x="320" y="10">
<mx:columns>
<mx:DataGridColumn dataField="@label" headerText="Label" />
<mx:DataGridColumn dataField="@data" headerText="Data" />
<mx:DataGridColumn dataField="@selected" headerText="Selected" />
</mx:columns>
</mx:DataGrid>
</mx:Application>
CheckBoxItemDataRenderer .as
package sban.flexStudy.dataGrid
{
import flash.events.Event;
import mx.controls.CheckBox;
public class CheckBoxItemDataRenderer extends CheckBox
{
public function CheckBoxItemDataRenderer()
{
super();
this.addEventListener(Event.CHANGE, changeHandler);
}
override public function set data(value:Object):void
{
super.data = value;
this.selected = listData.label == 'true';
}
protected function changeHandler(event : Event) : void
{
data.@selected = this.selected;
}
}
}
CheckBoxHeaderColumn.as
package sban.flexStudy.dataGrid
{
import mx.controls.dataGridClasses.DataGridColumn;
[Event(name="headerClick", type="flash.events.Event")]
public class CheckBoxHeaderColumn extends DataGridColumn
{
public function CheckBoxHeaderColumn(columnName:String=null)
{
super(columnName);
}
/**is the checkbox selected**/
public var selected:Boolean = false;
}
}
CheckBoxHeaderRenderer.as
package sban.flexStudy.dataGrid
{
import flash.events.Event;
import flash.events.MouseEvent;
import mx.controls.CheckBox;
import mx.controls.DataGrid;
import mx.events.DataGridEvent;
public class CheckBoxHeaderRenderer extends CheckBox
{
public function CheckBoxHeaderRenderer()
{
super();
//addEventListener("click", clickHandler);
}
private var _data:CheckBoxHeaderColumn;
override public function get data():Object
{
return _data;
}
override public function set data(value:Object):void
{
_data = value as CheckBoxHeaderColumn;
DataGrid(listData.owner).addEventListener(DataGridEvent.HEADER_RELEASE, sortEventHandler);
selected = _data.selected;
}
private function sortEventHandler(event:DataGridEvent):void
{
if (event.itemRenderer == this)
event.preventDefault();
}
override protected function clickHandler(event:MouseEvent):void
{
super.clickHandler(event);
data.selected = selected;
data.dispatchEvent( new Event("headerClick") );
}
}
}
分享到:
相关推荐
这篇博客“在DataGrid中使用CheckBox,实现全选功能”详细介绍了如何实现这一需求。 首先,我们需要在DataGrid的列定义中添加一个CheckBox列。在WPF中,可以使用DataGridTemplateColumn来自定义列模板,将CheckBox...
在博文《flex在DataGrid中实现checkbox全选或取消》中,作者可能详细讲解了以下步骤: 1. 创建DataGrid,并绑定数据源。 2. 添加一个CheckBox组件,作为全选/取消全选的控制。 3. 实现CheckBox的change事件监听,...
在本文中,我们将深入探讨两种在Flex或Adobe AIR应用程序中常用的组件——`DataGrid`和`AdvancedDataGrid`,特别是关于它们的CheckBox全选功能。`DataGrid`和`AdvancedDataGrid`是Flex中用于展示数据集合的强大工具...
项目中用到DataGrid, 需要在第一列添加checkbox, 可以多选、全选。 其中涉及的概念DataTemplate, DataGridCellStyle, DataGridCellControlTemplate,Binding, OnPropertyChanged等。
在Flex开发中,Datagrid是一种常用的组件,用于展示表格数据,而checkbox全选功能则是提高用户体验的一个重要特性。本文将详细讲解如何实现Flex Datagrid中checkbox的全选功能。 首先,我们要了解Flex Datagrid的...
在这个特定的场景中,我们关注的是如何在`DataGridView`的表头添加一个`CheckBox`,以便实现全选和全不选的功能。这将大大提升用户体验,使得用户可以快速地对所有行进行操作,如批量删除、更新等。 首先,我们需要...
在实际项目中,这三种方法都可以有效地实现Checkbox全选和反选功能。选择哪种方法主要取决于项目需求、性能考虑以及开发者的偏好。对于小型项目,前两种纯JavaScript的方法足够;对于大型项目,结合服务器端处理可能...
在本文中,我们将深入探讨如何在Flex中实现DataGrid和AdvancedDataGrid组件的CheckBox全选功能。这个功能在数据展示和交互式操作中非常常见,它允许用户通过一个主CheckBox来选择或取消选择所有行数据。 首先,我们...
在实际应用中,我们经常需要在`DataGrid`中添加复选框(CheckBox)来实现行级别的选择功能,同时提供全选和非全选的功能。这个功能不仅方便用户批量操作,也为应用提供了更好的交互性。本教程将详细讲解如何在`WPF ...
本教程将详细介绍如何在WPF中实现CheckBox的全选和反选功能。 首先,我们需要理解CheckBox的基本用法。在XAML中,我们可以创建一个CheckBox并为其设置文本和初始状态: ```xml <CheckBox Content="全选" x:Name=...
本示例关注的是在DataGrid中嵌套复选框(Checkbox),并实现全选功能。这在需要用户批量选择或操作数据的场景中非常常见。以下是对这个主题的详细讲解: 1. **Flex DataGrid组件**: Flex DataGrid是Adobe Flex...
而在这个特定的场景中,我们需要实现一个增强的功能:在`DataGridView`的列头添加一个`CheckBox`,通过这个`CheckBox`可以实现所有行中对应复选框的全选或反选操作。这个功能在数据管理界面中十分常见,例如在批量...
接下来,我们需要在MXML文件(例如dazhiTestDemo.mxml)中使用这个自定义列类。在DataGrid的columns属性中,我们可以创建一个CustomGridColumn实例,并将其dataField设置为一个特定的标识字段,这样我们可以通过这个...
最近懒 想在网上找个DataGrid ColumnHeader里面添加CheckBox全选,但是网上没找到,于是就自己写了一个这样的样式,具体功能实现你们就自己去写吧。 分享给大家。 有什么问题可以直接加WPF/Silverlight 找晴天就...
在`HeaderCheckbox_Checked`和`HeaderCheckbox_Unchecked`事件处理器中,我们需要遍历`DataGrid`的所有行,并同步复选框的状态: ```csharp private void HeaderCheckbox_Checked(object sender, RoutedEventArgs e...
总的来说,这个示例旨在教会开发者如何在Flex的DataGrid中实现全选功能,并且有效地管理CheckBox的选中状态。通过对DataGrid的自定义,我们可以灵活地扩展和优化这个功能,以满足不同业务需求。同时,了解和掌握这些...
要在DataGrid中使用自定义的渲染器,我们需要在DataGrid的配置中指定`headerRenderer`和`itemRenderer`属性。 ```as <mx:DataGrid id="myDataGrid"> 选项" headerRenderer="utils.itemrender.CheckBoxRender" ...
标题 "easyui checkbox +全选" 指的是在网页界面设计中使用 EasyUI 框架实现复选框(checkbox)以及全选功能。EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列预定义的 CSS 样式和 JavaScript 组件,帮助...
根据给定的信息,本文将详细解释如何在Flex中实现DataGrid中的checkbox全选或取消功能。这涉及到Flex的checkbox管理、事件监听与处理、以及如何使用Cairngorm框架进行模型层更新等内容。 ### 一、理解Flex DataGrid...