Flex DataGrid CheckBox selectAll 全选实现

[url]http://hi.baidu.com/qiyangyang2009/blog/item/e52825dc14be10fd76c63885.html/cmtid/fc9f115984c8278e800a18c1[/url]


[quote]一,首先创建一个类继承自DataGridColumn用来用成员保存全选状态;

package com.sintrue.components.datagridcheckbox
{
import mx.controls.dataGridClasses.DataGridColumn;
public class CheckBoxHeaderColumn extends DataGridColumn
{
public function CheckBoxHeaderColumn(columnName:String=null)
{
super(columnName);
}
/**is the checkbox in header selected**/
public var selected:Boolean = false;

}
}

二,创建HeaderRenderer类,继承自CheckBox

package com.sintrue.components.datagridcheckbox
{

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;
var dg:DataGrid = DataGrid(listData.owner);//get DataGrid object
if(dg.dataProvider.length>0){
for(var i:int = 0; i < dg.dataProvider.length ; i++){
dg.dataProvider[i].@selected = this.selected;
}
}
dg.dataProvider.refresh();
}

}
}

三 创建DataRenderer,继承自CheckBox

package com.sintrue.components.datagridcheckbox
{
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
{
if(data is XML)
data.@selected = this.selected;
else
data.selected = this.selected;
}

}
}

四,使用

<dataGrid:CheckBoxHeaderColumn textAlign="center"
dataField="@selected" width="26"
itemRenderer="com.sintrue.components.datagridcheckbox.CheckBoxItemDataRenderer"
headerRenderer="com.sintrue.components.datagridcheckbox"/>

[/quote]


[url]http://cookbooks.adobe.com/post_Select_all_checkboxes_in_a_datagrid-10786.html[/url]
[url]http://www.justskins.com/forums/select-all-checkboxes-in-85899.html[/url]

[url]http://www.fengfly.com/plus/view-172194-1.html[/url]


这个最简单好用.....哈哈
spark的checkbox没有data这个属性...mx的checkbox有data这个属性....

Select all checkboxes in datagrid via code


Im doing this:

private function selectAll():void {
var length : int = myDataGrid.dataProvider.length;
for( var i : int = 0; i < length; i++ )
{
var item : Object = myAccounts.getItemAt( i );
item["Include"] = '1';
}
myAccounts.refresh();
}

Include is my column of checkboxs in my datagrid

<mx:DataGridColumn headerText="Include" dataField="Include" width="58"
sortable="false">

<mx:itemRenderer>
<mx:Component>
<mx:HBox horizontalAlign="center">
<mx:CheckBox click="data.Include=!data.Include"
selected="{data.Include}" themeColor="#73B9B9"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>

</mx:DataGridColumn>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
删除之类操作需要全选功能,方便选择 public class MainActivity extends Activity { private ListView lv; private MyAdapter mAdapter; private ArrayList list; private Button bt_selectall; // private Button bt_cancel; // private Button bt_deselectall; private int checkNum; // 记录选中的条目数量 private TextView tv_show;// 用于显示选中的条目数量 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* 实例化各个控件 */ lv = (ListView) findViewById(R.id.lv); bt_selectall = (Button) findViewById(R.id.bt_selectall); // bt_cancel = (Button) findViewById(R.id.bt_cancelselectall); // bt_deselectall = (Button) findViewById(R.id.bt_deselectall); tv_show = (TextView) findViewById(R.id.tv); list = new ArrayList(); // 为Adapter准备数据 initDate(); // 实例化自定义的MyAdapter mAdapter = new MyAdapter(list, this); // 绑定Adapter lv.setAdapter(mAdapter); // 全选按钮的回调接口 bt_selectall.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 遍历list的长度,将MyAdapter中的map值全部设为true for (int i = 0; i < list.size(); i++) { MyAdapter.getIsSelected().put(i, true); } // 数量设为list的长度 checkNum = list.size(); // 刷新listview和TextView的显示 dataChanged(); } }); // 反选按钮的回调接口 // bt_cancel.setOnClickListener(new OnClickListener() { // @Override // public void onClick(View v) { // // 遍历list的长度,将已选的设为未选,未选的设为已选 // for (int i = 0; i < list.siz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值