想要达到的效果就是在DataGrid里面添加一列,用于标识是否选择的复选框,效果如图:
<?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"
creationComplete="init()"
>
<fx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Alert;
[Bindable]
private var carArray:ArrayCollection = new ArrayCollection();
private function doClose():void{
PopUpManager.removePopUp(this);
}
private function init():void{
var car : Object = new Object();
car.name = "Ford";
car.available = false;
carArray.addItem(car);
car = new Object();
car.name = "Benz";
car.available = false;
carArray.addItem(car);
car = new Object();
car.name = "BMW";
car.available = false;
carArray.addItem(car);
car = new Object();
car.name = "BUCIK";
car.available = false;
carArray.addItem(car);
car = new Object();
car.name = "TOYOTO";
car.available = false;
carArray.addItem(car);
car = new Object();
car.name = "CEHO";
car.available = false;
carArray.addItem(car);
car = new Object();
car.name = "KAKA";
car.available = false;
carArray.addItem(car);
car = new Object();
car.name = "MESSI";
car.available = false;
carArray.addItem(car);
}
//移动到区块
protected function moveToHandler(event:MouseEvent):void
{
// 判断选择数量是否大于0
var issel:Boolean = isSelected(carArray);
if(issel){
var moveToPlanRegion:MoveToPlanRegion = new MoveToPlanRegion()
moveToPlanRegion.height = 210;
moveToPlanRegion.width = 356;
var point1:Point = new Point();
point1.x=0;
point1.y=0;
point1=moveToPlanRegion.localToGlobal(point1);
moveToPlanRegion.x=(this.width - moveToPlanRegion.width)/2;
moveToPlanRegion.y=(this.height - moveToPlanRegion.height)/2;
moveToPlanRegion.title = "选择同级区块";
PopUpManager.addPopUp(moveToPlanRegion,this,true);
}else{
Alert.show("至少选择一条记录","提示");
}
}
// 判断选择数量是否大于0
private function isSelected(carArray:ArrayCollection):Boolean{
for each(var ob:Object in carArray){
if(ob.available == true){
return true;
}
}
return false;
}
//划分给区块
protected function divideHandler(event:MouseEvent):void
{
// 判断选择数量是否大于0
var drvideToPlanRegion:DrvideToPlanRegion = new DrvideToPlanRegion();
drvideToPlanRegion.height = 210;
drvideToPlanRegion.width = 356;
var point1:Point = new Point();
point1.x=0;
point1.y=0;
point1=drvideToPlanRegion.localToGlobal(point1);
drvideToPlanRegion.x=(this.width - drvideToPlanRegion.width)/2;
drvideToPlanRegion.y=(this.height - drvideToPlanRegion.height)/2;
drvideToPlanRegion.title = "选择下属区块";
PopUpManager.addPopUp(drvideToPlanRegion,this,true);
}
private function LabFunc(item:Object, column:DataGridColumn):String
{
return ((carArray.getItemIndex(item)+1).toString());
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="contacts"/>
</fx:Declarations>
<s:Group width="100%" height="100%" x="4" y="4">
<mx:TabNavigator id="tn" width="415" height="274" color="0x323232" >
<!-- Define each panel using a VBox container. -->
<s:NavigatorContent label="未归属资源">
<s:Label text="资源名称" fontSize="14" x="9" y="14"/>
<s:TextInput x="79" y="10" id="textInput"/>
<s:Button x="304" y="10" label="移动到区块" click="moveToHandler(event)"/>
<mx:DataGrid x="10" y="40" width="394" height="190" dataProvider="{carArray}" editable="true">
<mx:columns>
<fx:Array>
<mx:DataGridColumn headerText="选择" editable="false" textAlign="center" width="40">
<mx:itemRenderer>
<fx:Component>
<mx:CheckBox label="" selected="{data.available}" click="data.available = !data.available" textAlign="center"/>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="序号" labelFunction="LabFunc" sortable="false" resizable="false" textAlign="center" editable="false" width="40"/>
<mx:DataGridColumn headerText="标识" dataField="name" textAlign="center" editable="false"/>
<mx:DataGridColumn headerText="资源名称" dataField="available" editable="true" textAlign="center"/>
<mx:DataGridColumn headerText="资源类型" dataField="name" editable="true" textAlign="center"/>
<mx:DataGridColumn headerText="资源级别" dataField="available" editable="true" textAlign="center"/>
<mx:DataGridColumn headerText="归属时间" dataField="name" editable="true" textAlign="center"/>
</fx:Array>
</mx:columns>
</mx:DataGrid>
</s:NavigatorContent>
<s:NavigatorContent label="已归属资源">
<s:Label text="资源名称" fontSize="14" x="9" y="14"/>
<s:TextInput x="79" y="10"/>
<s:Button x="304" y="10" label="划分给区块" click="divideHandler(event)"/>
<mx:DataGrid x="10" y="40" width="394" height="190">
<mx:columns>
<fx:Array>
<mx:DataGridColumn headerText="选择" editable="false" textAlign="center" width="40">
<mx:itemRenderer>
<fx:Component>
<mx:CheckBox label="" selected="{data.available}" click="data.available = !data.available" textAlign="center"/>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="序号" labelFunction="LabFunc" sortable="false" resizable="false" textAlign="center" editable="false" width="40"/>
<mx:DataGridColumn headerText="标识" dataField="name" textAlign="center" editable="false"/>
<mx:DataGridColumn headerText="资源名称" dataField="available" editable="true" textAlign="center"/>
<mx:DataGridColumn headerText="资源类型" dataField="name" editable="true" textAlign="center"/>
<mx:DataGridColumn headerText="资源级别" dataField="available" editable="true" textAlign="center"/>
<mx:DataGridColumn headerText="归属时间" dataField="name" editable="true" textAlign="center"/>
</fx:Array>
</mx:columns>
</mx:DataGrid>
</s:NavigatorContent>
</mx:TabNavigator>
</s:Group>
</s:Application>
字段available 是用来标识这条记录是否被选中,如果没有这个字段,
<mx:CheckBox label="" textAlign="center"/>这样标识的话,点击表头进行排序是会发生混乱,这个字段就是用来解决这个问题。肯定还有其它解决方法的,不过我是用这种 。
- 大小: 11.5 KB
分享到:
相关推荐
当我们需要在数据网格中实现复选框功能,以便用户可以多选数据行时,通常会遇到两个主要需求:一是如何在标题栏添加复选框,二是如何使标题栏的复选框与数据行的复选框联动。下面将详细讲解这两个知识点。 首先,...
在实际应用中,我们经常需要在DataGrid的每一行中添加复选框(checkBox),以便用户可以选择一行或多行数据进行操作。这个教程将详细解释如何在Flex的DataGrid中动态添加复选框,并通过一个名为`DataGridDemo`的示例...
根据给定的文件信息,我们可以总结出关于Flex中带复选框的DataGrid的知识点,主要涉及Flex框架下的DataGrid组件及其自定义扩展,具体包括CheckBoxColumn、CheckBoxHeader和CheckBoxRenderer这三个类的设计与实现。...
在Flex Datagrid中实现复选框功能,主要是通过添加一个自定义的列renderer来完成。Renderer是Datagrid中的一个小部件,负责渲染每一行或每一列的数据。对于复选框,我们可以创建一个CheckBox类的实例,然后将其设置...
Flex的DataGrid中使用CheckBox. 大家共同研究
另外,每个DataGrid的列也需要配置为显示复选框,可以通过在Column或AdvancedDataGridColumn中设置dataField属性为“selected”,并指定renderer为CheckBox类型。 在博文《flex在DataGrid中实现checkbox全选或取消...
- 其次,为全选复选框添加事件监听器,比如`change`事件,当其状态改变时,遍历DataGrid的所有记录,通过`itemrenderer`中的复选框设置选中状态。 - 数据绑定可能涉及使用`selected`属性来同步复选框和数据模型的...
在实际应用中,我们有时需要在DataGrid的每一行中插入多个复选框(Checkbox),以便用户能够进行多项选择。本实例即展示了如何在Flex DataGrid中实现多列复选框的功能,同时避免了常见的拖动滚动条导致的混乱问题。 ...
DataGrid由多个列组成,每一列可能包含不同类型的控件,如文本、图像或复选框。在需要全选和反选功能时,通常会在表头中添加一个复选框,作为全选/反选的触发器。当用户点击这个复选框时,所有行中的复选框状态应随...
为了在列中添加复选框,我们需要创建一个自定义的GridColumn类,重写`createChildren`方法,在其中实例化并添加Checkbox组件。 ```actionscript public class CheckboxGridColumn extends DataGridColumn { ...
在Flex中,可以使用ListCollectionView或ArrayCollection作为数据源,然后在DataGrid的itemRenderer中添加复选框组件。 3. **解决滚动条导致的选中混乱问题** 当DataGrid有滚动条时,如果未正确处理复选框状态,...
在实际应用中,我们经常需要在DataGrid的列中添加复选框(Checkbox),以便用户能够进行多选操作,例如全选和单选。本文将深入探讨如何在Flex的DataGrid中使用复选框,并实现全选和单选功能。 首先,我们需要在...
标题"flex-带checkbox的datagrid"指的是在Flex Datagrid组件中集成复选框(checkbox)的功能。这种功能常用于多选操作,例如用户可以选择一组数据项进行批量删除、编辑或其他操作。下面将详细介绍如何在Flex中实现带...
在DataGrid中添加一个列用于显示复选框,用于单行的选择。这里我们使用`AdvancedDataGridColumn`,并设置`sortable`为`false`,因为选择列通常不需要排序功能。同时,我们指定了`headerRenderer`和`itemRenderer`,...
- CheckBox 是一个表示复选框的小方框,用于收集用户的布尔选择(即 true 或 false)。 #### 三、实现步骤 ##### 1. 创建 Flex 应用程序的基本结构 ```xml ()"> <![CDATA[ import mx.collections....
1. **复选框组件**:定义一个CheckBox实例,将其添加到渲染器的布局容器中,并根据需要设置其属性,如初始状态、事件监听器等。 2. **数据绑定**:将CheckBox的状态与数据模型的某个属性绑定,这样当复选框的状态...
这个类主要用于控制每个单元格中的复选框状态,并且可以监听复选框的状态变化。 ```as public class CheckBoxRender extends CheckBox { private static var headerFlag:Boolean; public var itemobj:Object; /...
要在DataGrid中添加CheckBox,首先我们需要创建一个包含复选框的新列。这可以通过定义一个自定义的Column类来完成,该类继承自mx.controls.DataGridColumn,并在itemRenderer属性中指定一个显示CheckBox的组件。...
在这个"Flex-DataGrid源码及资料"的压缩包中,包含了一些关键特性,如鼠标右键菜单、鼠标双击编辑、插入复选框以及数据集的双向绑定。下面将对这些功能进行详细介绍。 1. 鼠标右键:在Flex DataGrid中添加鼠标右键...
在实际开发中,可以根据具体需求进行调整,比如增加复选框来选择行,或者添加按钮来触发特定的操作,这些都是通过自定义ItemRenderer实现的。通过不断的实践和探索,你可以创造出更多富有创意和实用性的自定义Item...