`
datana
  • 浏览: 9217 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

全选或取消DataGrid中的checkbox

    博客分类:
  • FLEX
阅读更多

    在flex的DataGrid中动态生成的checkbox,不能像处理html页面中的checkbox那样,可以直接获得checkbox控件,而且flex中checkbox的属性与html中checkbox的属性也是不同的,例如html中的checkbox带有value属性,而在flex中checkbox是没有value属性的,也就是说我们要处理DataGrid中的checkbox面临两个难题,一是如何获取checkbox,二是如何获取checkbox的value。采用传统的html方式这些问题是无法解决的,正确的解决办法在于对事件的处理。

   首先,自定义checkbox控件keiyakusakiCheckBox,并且在checkbox控件中添加change事件。代码如下:                                                                                                                            <?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="
http://www.adobe.com/2006/mxml">
 <mx:Script>
  <![CDATA[
   import event.KeiyakusakiCheckEvent;
   import flash.events.Event;
   import com.adobe.cairngorm.control.CairngormEventDispatcher;
   import model.KeihoModelLocator;
   
   [Bindable]
            private var modelLocator:KeihoModelLocator = KeihoModelLocator.getInstance();
   
   internal function addKeiyakusaki() : void {
    var eventBroadCast:CairngormEventDispatcher = CairngormEventDispatcher.getInstance();
    eventBroadCast.dispatchEvent(new KeiyakusakiCheckEvent(data, keiyakusaki_check.selected));
   }
  ]]>
 </mx:Script>
 <mx:CheckBox id="keiyakusaki_check" x="20" y="0" selected="{modelLocator.keiyakusakiCheckBoxSelect}" change="addKeiyakusaki()"/>
</mx:Canvas>

将自定义的keiyakusakiCheckBox添加到DataGrid中,

<mx:DataGridColumn headerText="选择" itemRenderer="view.keiyakusakiCheckBox" width="50"/> <mx:DataGridColumn headerText="数据" dataField="keiyakusakiCode" width="100"/>

这里我使用了Cairngorm框架,个人认为其算不得真正的框架,只能说是提供了一种适合于flex的模式。checkbox的select属性是通过KeihoModelLocator类的一个Boolean型keiyakusakiCheckBoxSelect属性来控制的,注意KeihoModelLocator是单例模式的,保证整个页面的checkbox的select属性由keiyakusakiCheckBoxSelect属性来控制。

 KeiyakusakiCheckEvent这个时间是用于响应checkbox的change事件的,data是控件内部自带属性,封装了对应的数据(同一个colum中的数据),另一个参数为Boolean型变量,代表check是否选中。

package event
{
 import flash.events.Event;
 import vo.KeiyakusakiVO;
 import com.adobe.cairngorm.control.CairngormEvent;
 import control.KeihoController;
 
 public class KeiyakusakiCheckEvent extends CairngormEvent {
  
  public var isAdd : Boolean;
  public var keiyakusaki : Object;
  
  function KeiyakusakiCheckEvent(_data:Object, _isAdd:Boolean) : void {
   isAdd = _isAdd;
   keiyakusaki = _data;
   super(KeihoController.EVENT_KEIYAKUSAKI_CHECK);
  }
 }
}

现在已经将checkbox添加到DataGrid中,并且应经能够响应change事件,接下来进行数据的提取。   KeiyakusakiCheckCommand类中的execute方法中处理,

public function execute(event:CairngormEvent) : void
  {
   var keiyakusakiEvent:KeiyakusakiCheckEvent = event as KeiyakusakiCheckEvent;
    //数据不为空时
   if(keiyakusakiEvent.keiyakusaki != null) {                                                               

    var indexPositon:int = modelLocator.keiyakusakiCodeList.getItemIndex(keiyakusakiEvent.keiyakusaki.keiyakusakiCode);
    if(keiyakusakiEvent.isAdd && (indexPositon == -1)) {
              modelLocator.keiyakusakiCodeList.addItem(keiyakusakiEvent.keiyakusaki.keiyakusakiCD);
             } else if(!keiyakusakiEvent.isAdd && indexPositon != -1){
              modelLocator.keiyakusakiCodeList.removeItemAt(indexPositon);
             }
     }
  }

此处必须对数据进行严格控制,keiyakusakiCodeList为modelLocator中的ArrayColletion类型的集合,用于存放选中的数据,这里必须保证每次插入的数据都是集合中没有的,移除的数据必须是集合中存在的。

最后就是点击全选按钮或者清除按钮时,所有进行的操作了。确认button按下时执行一下代码,这里改变两次状态以实现状态改变,否则虽然数据改变,但画面状态不会改变,因为checkbox只响应change事件,

modelLocator.keiyakusakiCheckBoxSelect = false;
modelLocator.keiyakusakiCheckBoxSelect = true;

同理点击取消button的操作也需要两次改变keiyakusakiCheckBoxSelect 的状态。学习时间不长,不正确的地方希望高手指正。

分享到:
评论
1 楼 three_uncle 2008-09-25  
参考了。。。这篇帖子真练眼力。。。

相关推荐

    Flex_全选或取消DataGrid中的checkbox

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

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

    这个场景下,用户可能需要实现一个常见的功能,即在DataGrid中添加CheckBox,允许用户进行多选操作,尤其是全选功能。这篇博客“在DataGrid中使用CheckBox,实现全选功能”详细介绍了如何实现这一需求。 首先,我们...

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

    在.NET框架中,`DataGrid`控件是一个用于展示数据表格的强大工具,它允许用户以交互方式查看和编辑数据。...通过以上步骤,你可以在`DataGrid`中实现复选框的全选和取消功能,提供更丰富的用户交互体验。

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

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

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

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

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

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

    Flex DataGrid CheckBox 一个简单的全选

    在Flex的DataGrid中,我们可以为每一行添加CheckBox,这样用户就可以通过点击CheckBox来选择或取消选择特定的行。这在需要多选操作的场景中非常实用,比如用户需要批量处理某些数据。 二、设置CheckBox的默认状态 ...

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

    在实际应用中,我们经常需要在DataGrid中添加CheckBox,以便用户可以进行批量选择或者实现全选与非全选的功能。本文将详细讲解如何在WPF的DataGrid中实现这个功能。 首先,我们需要在XAML布局文件中为DataGrid添加...

    winform DataGridView表头带CheckBox全选

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

    flex Datagrid checkbox全选

    这样,整个Datagrid的checkbox就可以实现全选或全取消的效果。 为了实际应用这个功能,你需要将这些自定义类集成到你的项目中,为Datagrid的相应列指定`CheckBoxHeaderColumn`类,并配置好表头和行的渲染器。在Flex...

    DataGridView标头CheckBox全选反选

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

    flex datagrid 嵌套checkbox实现全选

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

    DataGrid和AdvancedDataGrid CheckBox全选功能

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

    WPF CheckBox全选、反选比较通用

    在Windows Presentation Foundation (WPF) 中,CheckBox是一个常用的控件,用于表示两种状态:选中或未选中。在开发用户界面时,特别是在涉及到多选列表时,全选和反选功能是常见的需求。本教程将详细介绍如何在WPF...

    wpf-DataGrid-checkBox

    在这个特定的场景中,我们关注的是如何在DataGrid的表头添加一个复选框(checkbox),以实现多选功能。这在处理大量数据时非常有用,用户可以通过勾选表头的复选框来选择或取消选择所有行。 要实现这一功能,我们...

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

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

    向dataGrid中添加checkBox

    本教程将深入探讨如何在DataGrid中添加复选框(checkBox),以实现多选、单选和全选功能。这对于用户交互和数据操作来说是非常实用的,比如在表格中进行批量选择或过滤。 首先,我们需要了解DataGrid的基本结构。...

    DataGrid全选并获取选中条目数

    - 在CheckBox_Checked事件处理函数中,遍历DataGrid的所有行,设置它们的IsSelected属性。 ```csharp private void CheckBox_Checked(object sender, RoutedEventArgs e) { var isChecked = (sender as CheckBox)...

    datagrid_checkbox.zip

    在DataGridView中添加Checkbox列,可以为每一行提供一个选择状态,用户可以通过点击复选框来选择或取消选择对应的行。以下是一些关键的知识点: 1. **添加Checkbox列**: 首先,你需要在DataGridView中创建一个新的...

Global site tag (gtag.js) - Google Analytics