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

关于在DataGrid中使用CheckBox全选

阅读更多

    该文中提供在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") );
  }
 
 }
}
 

分享到:
评论
1 楼 puppet_liu 2010-12-04  
找了很多例子,发现就这边例子最好最简单。。顶。

相关推荐

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

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

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

    在博文《flex在DataGrid中实现checkbox全选或取消》中,作者可能详细讲解了以下步骤: 1. 创建DataGrid,并绑定数据源。 2. 添加一个CheckBox组件,作为全选/取消全选的控制。 3. 实现CheckBox的change事件监听,...

    DataGrid和AdvancedDataGrid CheckBox全选功能

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

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

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

    flex Datagrid checkbox全选

    在Flex开发中,Datagrid是一种常用的组件,用于展示表格数据,而checkbox全选功能则是提高用户体验的一个重要特性。本文将详细讲解如何实现Flex Datagrid中checkbox的全选功能。 首先,我们要了解Flex Datagrid的...

    winform DataGridView表头带CheckBox全选

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

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

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

    DataGrid和AdvancedDataGrid CheckBox全选功能1.1

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

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

    在实际应用中,我们经常需要在`DataGrid`中添加复选框(CheckBox)来实现行级别的选择功能,同时提供全选和非全选的功能。这个功能不仅方便用户批量操作,也为应用提供了更好的交互性。本教程将详细讲解如何在`WPF ...

    WPF CheckBox全选、反选比较通用

    本教程将详细介绍如何在WPF中实现CheckBox的全选和反选功能。 首先,我们需要理解CheckBox的基本用法。在XAML中,我们可以创建一个CheckBox并为其设置文本和初始状态: ```xml &lt;CheckBox Content="全选" x:Name=...

    flex datagrid 嵌套checkbox实现全选

    本示例关注的是在DataGrid中嵌套复选框(Checkbox),并实现全选功能。这在需要用户批量选择或操作数据的场景中非常常见。以下是对这个主题的详细讲解: 1. **Flex DataGrid组件**: Flex DataGrid是Adobe Flex...

    DataGridView标头CheckBox全选反选

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

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

    接下来,我们需要在MXML文件(例如dazhiTestDemo.mxml)中使用这个自定义列类。在DataGrid的columns属性中,我们可以创建一个CustomGridColumn实例,并将其dataField设置为一个特定的标识字段,这样我们可以通过这个...

    silverlight 5 DataGrid ColumnHeader CheckBox全选样式

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

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

    在`HeaderCheckbox_Checked`和`HeaderCheckbox_Unchecked`事件处理器中,我们需要遍历`DataGrid`的所有行,并同步复选框的状态: ```csharp private void HeaderCheckbox_Checked(object sender, RoutedEventArgs e...

    Flex DataGrid CheckBox 一个简单的全选

    总的来说,这个示例旨在教会开发者如何在Flex的DataGrid中实现全选功能,并且有效地管理CheckBox的选中状态。通过对DataGrid的自定义,我们可以灵活地扩展和优化这个功能,以满足不同业务需求。同时,了解和掌握这些...

    flex datagrid checkbox 全选/反选

    要在DataGrid中使用自定义的渲染器,我们需要在DataGrid的配置中指定`headerRenderer`和`itemRenderer`属性。 ```as &lt;mx:DataGrid id="myDataGrid"&gt; 选项" headerRenderer="utils.itemrender.CheckBoxRender" ...

    easyui checkbox +全选

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

    Flex_全选或取消DataGrid中的checkbox

    根据给定的信息,本文将详细解释如何在Flex中实现DataGrid中的checkbox全选或取消功能。这涉及到Flex的checkbox管理、事件监听与处理、以及如何使用Cairngorm框架进行模型层更新等内容。 ### 一、理解Flex DataGrid...

Global site tag (gtag.js) - Google Analytics