/*******************************************************************************************
* 控制按钮是否有效
* *****************************************************************************************/
public function changeItemButtonEnable(itemId:String,array:ArrayCollection):void{
for(var i:int= 0;i
{
if(itemId == array[i].id){
var epsVoSource:ArrayCollection = ((this.epsModule.dgEpsItems.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
if(i-1 == -1){
this.epsModule.btnMoveUp.enabled = false;
this.epsModule.btnMoveRight.enabled = false;
parentSecondEpsVo = getParentItem(array[i].parentId,epsVoSource);
if(parentSecondEpsVo != null){
this.epsModule.btnMoveLeft.enabled = true;
}else{
this.epsModule.btnMoveLeft.enabled = false;
}
}else{
parentSecondEpsVo = getParentItem(array[i].parentId,epsVoSource);
if(parentSecondEpsVo != null){
this.epsModule.btnMoveLeft.enabled = true;
}else{
this.epsModule.btnMoveLeft.enabled = false;
}
this.epsModule.btnMoveUp.enabled = true;
this.epsModule.btnMoveRight.enabled = true;
}
if(i+1 == array.length){
this.epsModule.btnMoveDown.enabled = false;
if(i-1 == -1){
this.epsModule.btnMoveRight.enabled = false;
}else{
this.epsModule.btnMoveRight.enabled = true;
}
}else{
this.epsModule.btnMoveDown.enabled = true;
}
}else if(array[i].children != null && array[i].children.length!=0){
changeItemButtonEnable(itemId,array[i].children);
}
}
}
/************************************************************************************************************/
/**条目的上移动**/
public function upItem(itemId:String,array:ArrayCollection):void{
var selectedEpsVo:EpsVo = this.epsModule.dgEpsItems.selectedItem as EpsVo;
var epsVoTemp:EpsVo;
var epsVo:EpsVo;
for(var i:int = 0;i
if(itemId == array[i].id){
var index:int = 0;
for(var k:int = 0;k
{
if(itemId == array[k].id && k >0)
{
epsVoTemp = array[k] as EpsVo;
array[k] = array[k-1];
array[k-1] = epsVoTemp;
index++;
}
}
if(index == 0)
{
trace("找父Id");
var epsVoSource:ArrayCollection = ((this.epsModule.dgEpsItems.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
parentSecondEpsVo = getParentItem(selectedEpsVo.parentId,epsVoSource);
if(parentSecondEpsVo != null)
{
if(parentSecondEpsVo.children != null && parentSecondEpsVo.children.length != 0)
{
parentSecondEpsVo.children.removeItemAt(0);
}
}else
{
Alert.show("你不能将此项目移至最高级别,请重新操作!","操作提示");
break;
}
parentFirstEpsVo = getParentItem(parentSecondEpsVo.parentId,epsVoSource);
if(parentFirstEpsVo != null)
{
if(parentFirstEpsVo.children != null && parentFirstEpsVo.children.length != 0)
{
selectedEpsVo.parentId = parentFirstEpsVo.id;
parentFirstEpsVo.children.addItemAt(selectedEpsVo,parentFirstEpsVo.children.length);
}
}
else
{
for(var j:int = 0;j
if(epsVoSource[i].id == parentSecondEpsVo.id)
{
selectedEpsVo.parentId = epsVoSource[j].parentId;
epsVoSource.addItemAt(selectedEpsVo,j+1);
break;
}
}
}
}
}else if(array[i].children != null && array[i].children.length!=0){
upItem(itemId,array[i].children);
}
}
}
/**条目的上移动**/
/**条目的下移动**/
public function downItem(itemId:String,array:ArrayCollection):void{
var selectedEpsVo:EpsVo = this.epsModule.dgEpsItems.selectedItem as EpsVo;
var epsVoTemp:EpsVo;
var epsVo:EpsVo;
for(var i:int = 0;i
if(itemId == array[i].id){
var index:int = 0;
for(var k:int = 0;k
{
if(itemId == array[k].id && k
{
epsVoTemp = array[k+1] as EpsVo;
array[k+1] = array[k];
array[k] = epsVoTemp;
index++;
break;
}
}
if(index != 0)
{
break;
}else
{
Alert.show("已经是最底层,不能再往下了!","操作提示");
}
}else if(array[i].children != null && array[i].children.length!=0){
downItem(itemId,array[i].children);
}
}
}
/**条目的下移动**/
/**条目的左移动**/
private var parentSecondEpsVo:EpsVo;
private var parentFirstEpsVo:EpsVo;
public function leftItem(itemId:String,array:ArrayCollection,index:int):void
{
var indexCount:int = 0;
var selectedEpsVo:EpsVo = this.epsModule.dgEpsItems.selectedItem as EpsVo;
for(var i:int =0; i
{
if(itemId == array[i].id && parentFirstEpsVo == null)
{
var epsVoSource:ArrayCollection = ((this.epsModule.dgEpsItems.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
if(index == epsVoSource.length)
{
parentSecondEpsVo = getParentItem(array[i].parentId,epsVoSource);
if(parentSecondEpsVo != null){
parentSecondEpsVo.children.removeItemAt(i);
}else
{
Alert.show("你不能将此项目移至最高级别,请重新操作!","操作提示");
break;
}
parentFirstEpsVo = getParentItem(parentSecondEpsVo.parentId,epsVoSource);
if(parentFirstEpsVo != null)
{
for(var k:int = 0;k
{
if(parentFirstEpsVo.children[k].id == parentSecondEpsVo.id)
{
selectedEpsVo.parentId = parentFirstEpsVo.id;
parentFirstEpsVo.children.addItemAt(selectedEpsVo,k+1);
break;
}
}
break;
}
else
{
for(var j:int = 0;j
{
if(epsVoSource[j].id == parentSecondEpsVo.id)
{
selectedEpsVo.parentId = epsVoSource[j].parentId;
epsVoSource.addItemAt(selectedEpsVo,j+1);
break;
}
}
break;
}
}
}else if(array[i].children != null && array[i].children.length!=0){
leftItem(itemId,array[i].children,index);
}
}
}
/**条目的左移动**/
/**条目的右移动**/
public function rightItem(itemId:String,array:ArrayCollection):void{
var selectedEpsVo:EpsVo = this.epsModule.dgEpsItems.selectedItem as EpsVo;
for(var i:int = 0;i
if(itemId == array[i].id)
{
if(i-1 != -1)
{
var epsVo:EpsVo = array[i-1] as EpsVo;
array.removeItemAt(i);
selectedEpsVo.parentId = array[i-1].id;
epsVo.children.addItemAt(selectedEpsVo,epsVo.children.length);
break;
}else
{
Alert.show(",请重新操作!","操作提示");
break;
}
}else if(array[i].children != null && array[i].children.length!=0){
rightItem(itemId,array[i].children);
}
}
}
/**条目的右移动**/
public function getParentItem(parentId:String,array:ArrayCollection):EpsVo
{
var parentEpsVo:EpsVo;
for(var i:int = 0;i
if(parentId == array[i].id){
parentEpsVo = array[i] as EpsVo;
trace(parentEpsVo.id+"====父ID"+parentId+"====="+array[i].id);
return parentEpsVo;
}else if(array[i].children != null && array[i].children.length!=0){
if(parentEpsVo == null)
{
parentEpsVo = getParentItem(parentId,array[i].children);
}
}
}
return parentEpsVo;
}
/********************有待优化,如有朋友了解给点建议******/
/*************优化过的********************************/
/**测试用排序算法**/
private function sortDataSource(parentId:String, array:ArrayCollection, node:ProjectCodeVO, index:int):void {
for(var i:int=0; i<array.length; i++) {
var code:ProjectCodeVO = array[i] as ProjectCodeVO;
if(code.id == this.moveTargetVO.id) this.moveIndex = ProjectCodeModuleAS.getIndex();
if(code.parentId+"" == parentId+"") {
ProjectCodeModuleAS.addIndex();
//code.sequence = TaskCodeModuleAS.getIndex();
sortDataSource(code.id, array[i].children as ArrayCollection, code, ProjectCodeModuleAS.getIndex());
}
}
}
/**静态方法,计算顺序用**/
public static function addIndex():void {
index++;
}
/**静态方法,计算顺序用**/
public static function getIndex():int {
return index;
}
/**静态方法,设置顺序初始化值**/
public static function setIndex(i:int):void {
index = i;
}
/**向下移动节点**/
public function moveDown(event:MouseEvent):void {
//首先递归找到要交换位置的目标及其兄弟元素
var proCodeVo:ProjectCodeVO = this.currentWin.dgProCode.selectedItem as ProjectCodeVO;
var proCodes:ArrayCollection=((this.currentWin.dgProCode.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
swapProjectCodeNode(proCodeVo, proCodes, this.projectCodeVoDataSource, "DOWN");
}
/**向上移动节点**/
public function moveUp(event:MouseEvent):void {
//首先递归找到要交换位置的目标及其兄弟元素
var proCodeVo:ProjectCodeVO = this.currentWin.dgProCode.selectedItem as ProjectCodeVO;
var proCodes:ArrayCollection=((this.currentWin.dgProCode.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
swapProjectCodeNode(proCodeVo, proCodes, this.projectCodeVoDataSource, "UP");
}
/**向左移动节点**/
public function moveLeft(event:MouseEvent):void {
//首先递归找到要交换位置的目标及其兄弟元素
var proCodeVo:ProjectCodeVO = this.currentWin.dgProCode.selectedItem as ProjectCodeVO;
var proCodes:ArrayCollection=((this.currentWin.dgProCode.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
swapProjectCodeNode(proCodeVo, proCodes, this.projectCodeVoDataSource, "LEFT");
}
/**向右移动节点**/
public function moveRight(event:MouseEvent):void {
//首先递归找到要交换位置的目标及其兄弟元素
var proCodeVo:ProjectCodeVO = this.currentWin.dgProCode.selectedItem as ProjectCodeVO;
var proCodes:ArrayCollection=((this.currentWin.dgProCode.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
swapProjectCodeNode(proCodeVo, proCodes, this.projectCodeVoDataSource, "RIGHT");
}
/**递归查找到需要交换位置的元素的兄弟元素,并调换其位置**/
private function swapProjectCodeNode(targetVO:ProjectCodeVO, datas:ArrayCollection, parentVO:ProjectCodeVO, swapType:String):void {
try{
this.moveTargetVO = targetVO;
for(var i:int = 0; i<datas.length; i++) {
//Alert.show(targetVO.parentId);
//非根节点的情形
if(datas[i].id == targetVO.parentId) {
for(var j:int=0; j<datas[i].children.length; j++) {
if(datas[i].children[j].id == targetVO.id) {
if(swapType == "DOWN")
datas[i].children.addItemAt(targetVO, j+2);
else if(swapType == "UP")
datas[i].children.addItemAt(targetVO, j-1);
else if(swapType == "LEFT") {
//Alert.show("向左边移动!"+targetVO.parentId+"\n"+parentVO.parentId);
targetVO.parentId = parentVO.id;
parentVO.children.addItemAt(targetVO,i+1);
}
else if(swapType == "RIGHT") {
//Alert.show("向右移动!");
targetVO.parentId = datas[i].children[j-1].id;
datas[i].children[j-1].children.addItemAt(targetVO,datas[i].children[j-1].children.length);
}
this.currentWin.dgProCode.expandChildrenOf(targetVO, false);
this.currentWin.dgProCode.expandChildrenOf(targetVO, true);
this.currentWin.dgProCode.invalidateList();
this.currentWin.dgProCode.validateNow();
if(swapType == "DOWN")
datas[i].children.removeItemAt(j);
else if(swapType == "UP")
datas[i].children.removeItemAt(j+1);
else if(swapType == "LEFT")
datas[i].children.removeItemAt(j);
else if(swapType == "RIGHT")
datas[i].children.removeItemAt(j);
this.currentWin.dgProCode.expandChildrenOf(targetVO, false);
this.currentWin.dgProCode.expandChildrenOf(targetVO, true);
this.currentWin.dgProCode.invalidateList();
this.currentWin.dgProCode.validateNow();
var array:ArrayCollection=((this.currentWin.dgProCode.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
ProjectCodeModuleAS.setIndex(0);
var root:ProjectCodeVO = new ProjectCodeVO();
sortDataSource(null, array, root,ProjectCodeModuleAS.getIndex());
CairngormEventDispatcher.getInstance().dispatchEvent(new ProjectCodeEvent(ProjectCodeEvent.EVENT_UPDATE_PROJECTCODEDEFINPARENT,this.projectCodeVoDataSource,null,currentWin as ProjectCodeModuleInterface));
break;
}
}
}else if(targetVO.parentId+"" == "null") {//根节点的情形
if(datas[i].id == targetVO.id) {
if(swapType == "DOWN")
this.projectCodeVoDataSource.children.addItemAt(targetVO, i+2);
else if(swapType == "UP")
this.projectCodeVoDataSource.children.addItemAt(targetVO, i-1);
else if(swapType == "RIGHT") {
targetVO.parentId = this.projectCodeVoDataSource.children[i-1].id;
this.projectCodeVoDataSource.children[i-1].children.addItemAt(targetVO, this.projectCodeVoDataSource.children[i-1].children.length);
}
this.currentWin.dgProCode.expandChildrenOf(targetVO, false);
this.currentWin.dgProCode.expandChildrenOf(targetVO, true);
this.currentWin.dgProCode.invalidateList();
this.currentWin.dgProCode.validateNow();
if(swapType == "DOWN")
this.projectCodeVoDataSource.children.removeItemAt(i);
else if(swapType == "UP")
this.projectCodeVoDataSource.children.removeItemAt(i+1);
else if(swapType == "RIGHT") {
this.projectCodeVoDataSource.children.removeItemAt(i);
}
this.currentWin.dgProCode.expandChildrenOf(targetVO, false);
this.currentWin.dgProCode.expandChildrenOf(targetVO, true);
this.currentWin.dgProCode.invalidateList();
this.currentWin.dgProCode.validateNow();
var array:ArrayCollection=((this.currentWin.dgProCode.dataProvider as HierarchicalCollectionView).source as HierarchicalData).source as ArrayCollection;
ProjectCodeModuleAS.setIndex(0);
var root:ProjectCodeVO = new ProjectCodeVO();
sortDataSource(null, array, root,ProjectCodeModuleAS.getIndex());
CairngormEventDispatcher.getInstance().dispatchEvent(new ProjectCodeEvent(ProjectCodeEvent.EVENT_UPDATE_PROJECTCODEDEFINPARENT,this.projectCodeVoDataSource,null,currentWin as ProjectCodeModuleInterface));
break;
}
}else {
swapProjectCodeNode(targetVO, datas[i].children, datas[i], swapType);
}
}
//this.taskCodeModule.dgTaskCode.selectedItem = targetVO;
}catch(error:Error) {
}
}
分享到:
相关推荐
在Flex开发中,AdvancedDataGrid组件是用于展示大量复杂数据的高级网格控件。它提供了比基本DataGrid更丰富的功能,如多级表头、排序、分组、过滤和自定义渲染等。本文将深入探讨Flex应用中的AdvancedDataGrid表头...
综上所述,实现Flex AdvancedDataGrid中带复选框的树形结构涉及数据模型的设计、HierarchicalData的使用、AdvancedDataGrid的配置以及事件处理等多个方面。通过灵活应用这些技术,我们可以创建出功能强大且易于操作...
在IT行业中,AdvancedDataGrid是Flex(Adobe Flex)框架中一个强大的数据网格组件,用于显示大量结构化的数据。它提供了高级的数据呈现功能,比如分组、排序、过滤和自定义渲染。本文将深入探讨“FLEX ...
### Flex技术中AdvancedDataGrid使用方法 #### 一、多列排序 在默认情况下,`AdvancedDataGrid`组件会按照数据被添加至其`DataProvider`的顺序来展示数据。与`DataGrid`组件类似,`AdvancedDataGrid`也支持用户在...
在Flex开发中,AdvancedDataGrid是一款强大的数据网格组件,它提供了丰富的数据展示和交互功能,如排序、分组、过滤等。在实际应用中,我们经常需要为用户提供选择多条数据的能力,这时CheckBox的选择功能就显得尤为...
在Flex开发环境中,AdvancedDataGrid组件是一个强大的数据展示工具,尤其适用于处理大量复杂数据的网格显示。本课件管理系统就是基于这个组件构建的,旨在提供一个基础的平台,用于管理和浏览课件信息。下面将详细...
在Flex编程领域,数据网格(DataGrid)是用于展示大量结构化数据的组件,而AdvancedDataGrid则是DataGrid的一个增强版,提供了更为丰富的功能和更高级的定制能力。本示例"flex-datagrid-advancedDataGrid-demo"显然...
AdvancedDataGrid支持树形结构数据,可以显示嵌套的数据集,这对于展示层次关系复杂的数据非常有用。通过使用GroupingField和DataGroup对象,我们可以将数据按照特定字段进行分组。 3. **多列排序** 与DataGrid...
在Flex开发中,AdvancedDataGrid是一个强大的组件,用于展示大量数据并进行复杂的数据操作,如分组、排序和过滤。这个组件特别适用于构建数据密集型的用户界面,尤其是在需要显示层次结构数据时。本篇文章将深入探讨...
非常好用的 felx AdvancedDataGrid 多选框 单选框支持渲染器,不需改到AdvancedDataGrid 代码; 支持 xml 数据源的网上可查到一些, 但这个可是 支持 Array 类型数据源的。
在本文中,我们将深入探讨Adobe Flex中的AdvancedDataGrid组件,特别是在实现多表头和树形表格方面的应用,这对于数据统计和展示来说是非常重要的工具。AdvancedDataGrid是Flex中一个功能强大的组件,它允许用户以...
<![CDATA[ import mx.controls.CheckBox; import mx.controls.Alert; import com.as3xls.xls.ExcelFile;... Alert.show("行的数据分别是:"+o.idx+"/"+o.names+"/"+o.sex);...</mx:WindowedApplication>
Flex CSS设计器是一款基于Flash技术的工具,专门用于帮助开发者对Flex应用程序中的用户界面控件进行CSS样式设计。这款工具提供了一个可视化的环境,使得设计师和开发者能够更直观、便捷地调整Flex控件的外观和布局,...
flex datavisualization.swc flex 3 AdvancedDataGrid
在Flex编程中,AdvancedDataGrid和DataGrid是两种常用的组件,用于展示数据并提供交互功能。本示例项目“Flex全选效果批量删除”聚焦于如何实现这些组件的一个实用功能,即用户可以通过全选复选框来一次性选择多个...
在Flex开发中,AdvancedDataGrid组件是一个常用的显示表格数据的组件,其功能比基础的DataGrid组件更为强大,支持更加复杂的数据显示需求,例如显示多层表头、支持拖拽排序等。在某些情况下,当需要展示具有复杂数据...
AdvancedDataGrid或datagrid导出到excel.rar AdvancedDataGrid或datagrid导出到excel.rar AdvancedDataGrid或datagrid导出到excel.rar
最新的AdvancedDataGrid行嵌套AdvancedDataGrid实现,该例子只是实现AdvancedDataGrid利用AdvancedDataGridRendererProvider在行中渲染另外一个AdvancedDataGrid,当然也可以渲染其它任何想渲染的界面或者组件,价值...
SparkTree_AdvancedDataGrid是基于Adobe Flex SDK 4.5的一个高级组件,它在Flex应用中提供了强大的树形数据展示功能。Flex是一个用于创建富互联网应用程序(RIA)的开放源代码框架,广泛应用于Web开发,特别适合构建...
AdvancedDataGrid是Flex框架中一个强大的组件,它专为处理大量复杂数据而设计,常用于企业级应用的表格展示。 在Flex开发中,AdvancedDataGrid相比普通的DataGrid,提供了更丰富的功能和更高级的定制能力。它支持多...