加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex的datagrid中动态绑定按钮

发布时间:2020-12-15 01:39:04 所属栏目:百科 来源:网络整理
导读:显示DataGrid的界面xml ------------------------------------------- [Bindable] var array :ArrayCollection=new ArrayCollection({paperId:"12321321",paperName:"测试试卷",source:"三年一班自测卷",userScore:"80","2011-11-11 13:25"}); ? paging:Chec

显示DataGrid的界面xml

-------------------------------------------

[Bindable]

var array:ArrayCollection=new ArrayCollection({paperId:"12321321",paperName:"测试试卷",source:"三年一班自测卷",userScore:"80","2011-11-11 13:25"});

?

<paging:CheckBoxDataGrid width="880" height="300" id="finishedExam" dataProvider="{array}" horizontalScrollPolicy="off"
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?allowMultipleSelection="false" verticalScrollPolicy="off">
??? ??? ??? ??? ??? ??? <paging:columns>
??? ??? ??? ??? ??? ??? ??? <mx:DataGridColumn dataField="id" headerText="请勾选" width="20"
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? sortable="false" itemRenderer="fx.util.CheckBoxRenderer" headerRenderer="fx.util.CheckBoxHeaderRenderer" >
??? ??? ??? ??? ??? ??? ??? </mx:DataGridColumn>
??? ??? ??? ??? ??? ??? ??? <mx:DataGridColumn headerText="试卷名称" dataField="paperName" width="220"/>
??? ??? ??? ??? ??? ??? ??? <mx:DataGridColumn headerText="来源" dataField="source" width="180"/>
??? ??? ??? ??? ??? ??? ??? <mx:DataGridColumn headerText="得分" dataField="userScore" width="50"/>
??? ??? ??? ??? ??? ??? ??? <mx:DataGridColumn headerText="做卷时间" dataField="finalTime" width="150"/>
??? ??? ??? ??? ??? ??? ??? <mx:DataGridColumn headerText="操作" dataField="id" itemRenderer="fx.view.ExamOperationView">
??? ??? ??? ??? ??? ??? ??? </mx:DataGridColumn>
??? ??? ??? ??? ??? ??? </paging:columns>
</paging:CheckBoxDataGrid>

?

说明:CheckBoxDataGrid源自网络找到的资料,而<paging: 则由自己在容器中定义 xmlns:paging="fx.util.*",参看xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"

xmlns:mx="library://ns.adobe.com/flex/mx"

---------------------------------------------------

?

绑定按钮的界面fx.view.ExamOperationView.mxml

----------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox 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()"
??? ??? ?width="228" height="22">
??? <fx:Declarations>
??? ??? <!-- 将非可视元素(例如服务、值对象)放在此处 -->
??? </fx:Declarations>
??? <fx:Script>
??? ??? <![CDATA[
??? ??? ??? import com.adobe.cairngorm.CairngormUtil;
??? ??? ???
??? ??? ??? import mx.binding.utils.BindingUtils;
??? ??? ??? import mx.controls.Alert;
??? ??? ??? import mx.controls.Button;
??? ??? ??? import mx.controls.Spacer;
??? ??? ??? /**
??? ??? ??? ?*???
??? ??? ??? ?* @param id 成绩ID
??? ??? ??? ?* @param paperid 试卷ID
??? ??? ??? ?**/
??? ??? ??? public function viewThisExam(event:MouseEvent):void{
??? ??? ??? ???
??? ??? ??? ??? Alert.show("成绩ID="+data.id+" 试卷ID="+data.paperId);
??? ??? ??? }
??? ??? ??? /**
??? ??? ??? ?*??
??? ??? ??? ?* @param id 成绩ID
??? ??? ??? ?* @param paperid 试卷ID
??? ??? ??? ?**/
??? ??? ??? public function redoThisExam(event:MouseEvent):void{
??? ??? ??? ??? Alert.show("成绩ID="+data.id+" 试卷ID="+data.paperId);
??? ??? ??? }

??? ??? ??? /**
??? ??? ??? ?* 动态创建组件
??? ??? ??? ?**/
??? ??? ??? public function init():void{
??? ??? ??? ??? //1.创建对象
??? ??? ??? ??? var viewbtn:Button=new Button();
??? ??? ??? ??? var redobtn:Button=new Button();
??? ??? ??? ??? var delbtn:Button=new Button();
??? ??? ??? ??? var spacer:Spacer=new Spacer();
??? ??? ??? ??? //2.设定属性
??? ??? ??? ??? viewbtn.id="view_"+data.id;
??? ??? ??? ??? viewbtn.label="查看";
??? ??? ??? ??? redobtn.id="redo_"+data.id;
??? ??? ??? ??? redobtn.label="重做";
??? ??? ??? ??? delbtn.id="del_"+data.id;
??? ??? ??? ??? delbtn.label="删除";
??? ??? ??? ??? //3.绑定事件监听
??? ??? ??? ??? viewbtn.addEventListener(MouseEvent.CLICK,viewThisExam);
??? ??? ??? ??? redobtn.addEventListener(MouseEvent.CLICK,redoThisExam);
??? ??? ??? ??? delbtn.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void{
??? ??? ??? ??? ??? var params:Object={resultid:data.id,button:delbtn};
??? ??? ??? ??? ??? CairngormUtil.event("DeleteCD",params);
??? ??? ??? ??? });
??? ??? ??? ??? //4.将对象添加到指定容器中,hbox为某mx:HBox的ID
??? ??? ??? ??? hbox.addChild(spacer);
??? ??? ??? ??? hbox.addChild(viewbtn);
??? ??? ??? ??? hbox.addChild(redobtn);
??? ??? ??? ??? hbox.addChild(delbtn);
??? ??? ??? ??? ???
??? ??? ??? }
??? ??? ???
??? ??? ]]>
??? </fx:Script>
???
??? <mx:HBox id="hbox" width="100%" height="100%">
??? ???
??? </mx:HBox>
</mx:HBox>
------------------------------------------------

?

下面附上CheckBoxDataGrid.as、CheckBoxHeaderRenderer.as、CheckBoxRenderer.as、CheckBoxList.as四个文件

这四个文件源自网络、具体地址已经遗忘

------------------------------------------------

CheckBoxDataGrid.as

---------------------------

package fx.util
{
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import mx.controls.CheckBox;
import mx.controls.DataGrid;
import mx.controls.listClasses.IListItemRenderer;

/**
?*? DataGrid that uses checkboxes for multiple selection
?*/
public class CheckBoxDataGrid extends DataGrid
{

??? override protected function selectItem(item:IListItemRenderer,
????????????????????????????????? shiftKey:Boolean,ctrlKey:Boolean,
????????????????????????????????? transition:Boolean = true):Boolean
??? {
??? ??? // only run selection code if a checkbox was hit and always
??? ??? // pretend we're using ctrl selection
??? ??? if (item is CheckBox)
??? ??? ??? return super.selectItem(item,false,true,transition);
??? ??? return false;
??? }

??? // turn off selection indicator
??? override protected function drawSelectionIndicator(
??????????????????????????????? indicator:Sprite,x:Number,y:Number,
??????????????????????????????? width:Number,height:Number,color:uint,
??????????????????????????????? itemRenderer:IListItemRenderer):void
??? {
??? }

??? // whenever we draw the renderer,make sure we re-eval the checked state
??? override protected function drawItem(item:IListItemRenderer,
??????????????????????????????? selected:Boolean = false,
??????????????????????????????? highlighted:Boolean = false,
??????????????????????????????? caret:Boolean = false,
??????????????????????????????? transition:Boolean = false):void
??? {
??? ??? if (item is CheckBox)
??????????? CheckBox(item).invalidateProperties();
??? ??? super.drawItem(item,selected,highlighted,caret,transition);
??? }

??? // fake all keyboard interaction as if it had the ctrl key down
??? override protected function keyDownHandler(event:KeyboardEvent):void
??? {
??? ??? // this is technically illegal,but works
??? ??? event.ctrlKey = true;
??? ??? event.shiftKey = false;
??? ??? super.keyDownHandler(event);
??? }

}

}

?

-------------------------------------------------------

CheckBoxHeaderRenderer.as

--------------------------------------

?

package fx.util
{
import flash.display.DisplayObject;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.text.TextField;
import mx.controls.CheckBox;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.ListBase;

/**
?*? The Renderer.
?*/
public class CheckBoxHeaderRenderer extends CheckBox
{

??? public function CheckBoxHeaderRenderer()
??? {
??? ??? focusEnabled = false;
??? }

??? override public function set data(value:Object):void
??? {
??? ??? invalidateProperties();
??? }
???
??? private var addedListener:Boolean = false;
??? //用于标识是否是部分选中
??? private var partiallySelected:Boolean = false;

??? override protected function commitProperties():void
??? {
??? ??? super.commitProperties();
??? ??? if (owner is ListBase)
??????? {
??????????? if (!addedListener)
??????????? {
??????????????? addedListener = true;
??? ??? ??? ??? //设置事件监听
??????????????? owner.addEventListener("valueCommit",owner_changeHandler,true);
??????????????? owner.addEventListener("change",true);
??????????? }

??????????? if (ListBase(owner).dataProvider.length ==
??????????????? ListBase(owner).selectedItems.length)
??????????? {//如果选中个数等于CheckBoxDataGrid数据的个数
??? ??? ??? ??? selected = true;//全部选中识为true
??????????????? partiallySelected = false;//部分选中标识为false
??????????? }
??????????? else if (ListBase(owner).selectedItems.length == 0)
??????????? {//如果选中个数为0
??????????????? selected = false;//全部选中识为false
??????????????? partiallySelected = false;//部分选中标识为false
??????????? }
??????????? else
??????????? {
??????????????? selected = false;//全部选中识为false
??????????????? partiallySelected = true;//部分选中标识为true
??????????? }
??????????? invalidateDisplayList();
??????? }
??? }

??? /* eat keyboard events,the underlying list will handle them */
??? override protected function keyDownHandler(event:KeyboardEvent):void
??? {
??? }

??? /* eat keyboard events,the underlying list will handle them */
??? override protected function keyUpHandler(event:KeyboardEvent):void
??? {
??? }

??? override protected function clickHandler(event:MouseEvent):void
??? {
??????? if (selected)
??????? {
??????????? //选中后设置为不选中
??????????? ListBase(owner).selectedIndex = -1;
??????? }
??????? else
??????? {?? //设置其他每行的checkbox为选中
??????????? var n:int = ListBase(owner).dataProvider.length;
??????????? var arr:Array = [];
??????????? for (var i:int = i; i < n; i++)
??????????????? arr.push(i);
??? ??? ??? //设置选中的索引是全部行
??????????? ListBase(owner).selectedIndices = arr;
??????? }
??? }

??? /* center the checkbox if we're in a datagrid */
??? override protected function updateDisplayList(w:Number,h:Number):void
??? {
??? ??? super.updateDisplayList(w,h);

??????? graphics.clear();

??? ??? if (listData is DataGridListData)
??? ??? {
??? ??? ??? var n:int = numChildren;
??? ??? ??? for (var i:int = 0; i < n; i++)
??? ??? ??? {
??? ??? ??? ??? var c:DisplayObject = getChildAt(i);
??? ??? ??? ??? if (!(c is TextField))
??? ??? ??? ??? {
??? ??? ??? ??? ??? c.x = (w - c.width) / 2;
??? ??? ??? ??? ??? c.y = 0;
??????????????????? c.alpha = 1;
??????????????????? if (partiallySelected)
??????????????????? {
??????????????????????? graphics.beginFill(0x000000);
??????????????????????? graphics.drawRect(c.x,c.y,c.width,c.height);
??????????????????????? graphics.endFill();
??????????????????????? c.alpha = 0.7;
??????????????????? }
??? ??? ??? ??? }
??? ??? ??? }
??? ??? }
??? }

??? private function owner_changeHandler(event:Event):void
??? {
??????? invalidateProperties();
??? }

}

}

?

----------------------------------------------------

CheckBoxRenderer.as

---------------------------------------

?

package fx.util
{
import flash.display.DisplayObject;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.text.TextField;
import mx.controls.CheckBox;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.ListBase;

/**
?*? The Renderer.
?*/
public class CheckBoxRenderer extends CheckBox
{

??? public function CheckBoxRenderer()
??? {
??? ??? focusEnabled = false;
??? }
??? /**
??? ?* 初始化设置值
??? ?**/
??? override public function set data(value:Object):void
??? {
??? ???
??? ??? super.data = value;
??? ??? invalidateProperties();
??? }
???
??? override protected function commitProperties():void
??? {
??? ??? super.commitProperties();
??? ??? //owner是指包含checkbox的CheckBoxDataGrid
??? ??? //判断是否选中数据,如果owner是ListBase类型对象则借助ListBase的isItemSelected方法来判断是否选中某行数据
??? ??? if (owner is ListBase)
??? ??? ??? selected = ListBase(owner).isItemSelected(data);
??? }

??? /* eat keyboard events,the underlying list will handle them */
??? override protected function keyUpHandler(event:KeyboardEvent):void
??? {
??? }

??? /* eat mouse events,the underlying list will handle them */
??? override protected function clickHandler(event:MouseEvent):void
??? {
??? }

??? /* center the checkbox if we're in a datagrid */
??? override protected function updateDisplayList(w:Number,h);

??? ??? if (listData is DataGridListData)
??? ??? {
??? ??? ??? var n:int = numChildren;
??? ??? ??? for (var i:int = 0; i < n; i++)
??? ??? ??? {
??? ??? ??? ??? var c:DisplayObject = getChildAt(i);
??? ??? ??? ??? if (!(c is TextField))
??? ??? ??? ??? {
??? ??? ??? ??? ??? c.x = (w - c.width) / 2;
??? ??? ??? ??? ??? c.y = 0;
??? ??? ??? ??? }
??? ??? ??? }
??? ??? }
??? }

}

}

?

----------------------------------------------------------------

CheckBoxList.as

----------------------------------------

package fx.util
{
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import mx.controls.List;
import mx.controls.listClasses.IListItemRenderer;
import mx.controls.CheckBox;

/**
?*? List that uses checkboxes for multiple selection
?*/
public class CheckBoxList extends List
{

??? // fake all mouse interaction as if it had the ctrl key down
??? override protected function selectItem(item:IListItemRenderer,
????????????????????????????????? transition:Boolean = true):Boolean
??? {
??? ??? return super.selectItem(item,transition);
??? }

??? // turn off selection indicator
??? override protected function drawSelectionIndicator(
??????????????????????????????? indicator:Sprite,
??????????????????????????????? transition:Boolean = false):void
??? {
??? ??? CheckBox(item).invalidateProperties();
??? ??? super.drawItem(item,but works
??? ??? event.ctrlKey = true;
??? ??? event.shiftKey = false;
??? ??? super.keyDownHandler(event);
??? }
}

}

?

------------------------------------------------------------------------

PageBar.as

-------------------------

package fx.util
{
?? ?import com.adobe.cairngorm.CairngormUtil;
?? ?
?? ?import mx.collections.ArrayCollection;
?? ?import mx.controls.Button;
?? ?import mx.controls.Label;
?? ?import mx.controls.LinkBar;
?? ?import mx.events.ItemClickEvent;
?? ?
?? ?//必须声明成Bindable才能在其他mxml中Bindable
?? ?[Bindable]
?? ?public class PageBar
?? ?{
?? ??? ?/**
?? ??? ? * 查询数据的事件名称
?? ??? ? **/
?? ??? ?public var eventName:String="";
?? ??? ?/**
?? ??? ? * 总记录数
?? ??? ? **/
?? ??? ?public var totalRecordSize:int=0;
?? ??? ?/**
?? ??? ? * 每页显示行数
?? ??? ? **/
?? ??? ?public var pageSize:int=10;?? ??? ?
?? ??? ?/**
?? ??? ? * 当前页数
?? ??? ? **/
?? ??? ?public var currentPage:int=1;?? ??? ?
?? ??? ?/**
?? ??? ? * 总页数
?? ??? ? **/
?? ??? ?public var totalPageSize:int=1;?? ?
?? ??? ?/**
?? ??? ? * 首页
?? ??? ? **/
?? ??? ?public var firstPage:int=1;
?? ??? ?/**
?? ??? ? * 上一页
?? ??? ? **/
?? ??? ?public var prePage:int=1;
?? ??? ?/**
?? ??? ? * 下一页
?? ??? ? **/
?? ??? ?public var nextPage:int=1;
?? ??? ?/**
?? ??? ? * 尾页
?? ??? ? **/
?? ??? ?public var lastPage:int=1;
?? ??? ?/**
?? ??? ? * 所有的数据
?? ??? ? **/
?? ??? ?public var orgData:ArrayCollection=new ArrayCollection();
?? ??? ?/**
?? ??? ? * 每页显示页码数
?? ??? ? **/
?? ??? ?public var pageNumShow:int=10;
?? ??? ?/**
?? ??? ? * 每页显示页码
?? ??? ? **/
?? ??? ?public var pageNumData:ArrayCollection=new ArrayCollection();
?? ??? ?/**
?? ??? ? * 存储查询参数
?? ??? ? * */
?? ??? ?public var params:Object={};
?? ??? ?/**
?? ??? ? * 当前页
?? ??? ? **/
?? ??? ?public var curPageLabel:Label=new Label();
?? ??? ?/**
?? ??? ? * 共多少页
?? ??? ? **/
?? ??? ?public var totalPageLabel:Label=new Label();
?? ??? ?/**
?? ??? ? * 共多少条记录
?? ??? ? **/
?? ??? ?public var countRecordSizeLabel:Label=new Label();
?? ??? ?/**
?? ??? ? * 首页
?? ??? ? **/
?? ??? ?public var firstNavBtn:Button=new Button();
?? ??? ?/**
?? ??? ? * 上一页
?? ??? ? **/
?? ??? ?public var preNavBtn:Button=new Button();
?? ??? ?/**
?? ??? ? * 分页块
?? ??? ? **/
?? ??? ?public var pageNav:LinkBar=new LinkBar();
?? ??? ?/**
?? ??? ? * 下一页
?? ??? ? **/
?? ??? ?public var nextNavBtn:Button=new Button();
?? ??? ?/**
?? ??? ? * 尾页
?? ??? ? **/
?? ??? ?public var lastNavBtn:Button=new Button();
?? ??? ?
?? ??? ?public function PageBar()
?? ??? ?{
?? ??? ?}
?? ??? ?
?? ??? ?/**
?? ??? ? * 计算总页数
?? ??? ? **/
?? ??? ?public function countTotalPageSize():void{
?? ??? ??? ?//1.总记录数小于每页显示记录数时
?? ??? ??? ?if(this.totalRecordSize<=this.pageSize && this.totalRecordSize>=0){
?? ??? ??? ??? ?this.totalPageSize=1
?? ??? ??? ?}
?? ??? ??? ?//2.总记录数大于每页显示记录数时? ?
?? ??? ??? ?if(this.totalRecordSize>this.pageSize && this.pageSize>=0){
?? ??? ??? ??? ?//trace("this.totalRecordSize/this.pageSize="+this.totalRecordSize/this.pageSize);
?? ??? ??? ??? ?//2.1 总记录数正好是每页显示记录数的倍数时,总页数=总记录数/每页显示记录数
?? ??? ??? ??? ?this.totalPageSize=this.totalRecordSize/this.pageSize;
?? ??? ??? ??? ?//trace("this.totalRecordSize%this.pageSize="+this.totalRecordSize%this.pageSize);
?? ??? ??? ??? ?//2.2 总记录数不是每页显示记录数的倍数时,总页数=总记录数/每页显示记录数+1
?? ??? ??? ??? ?if(this.totalRecordSize%this.pageSize>0){
?? ??? ??? ??? ??? ?this.totalPageSize+=1;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?/**
?? ??? ? * 设置首页和尾页
?? ??? ? **/
?? ??? ?public function setFirstPageAndLastPage():void{
?? ??? ??? ?//1.总体分页数第一页和最后一页
?? ??? ??? ?this.firstPage=1;
?? ??? ??? ?this.lastPage=this.totalPageSize;
?? ??? ??? ?//2.还有一中设置是根据this.pageNumData来设置
?? ??? ??? ?var size:int=this.pageNumData.length;
?? ??? ??? ?//this.firstPage=this.pageNumData.getItemAt(0).label
?? ??? ??? ?//this.lastPage=this.pageNumData.getItemAt(size-1).label
?? ??? ?}

?? ??? ?/**
?? ??? ? * 初始化分页,设置总记录数、每页显示记录数、当前页、计算总页数、设置首页、设置尾页
?? ??? ? * @param totalRecordSize 总记录数
?? ??? ? * @param pageSize 每页显示记录数
?? ??? ? * @param currentPage 当前页页码
?? ??? ? *
?? ??? ? **/
?? ??? ?public function initPageBar(totalRecordSize:int,pageSize:int,currentPage:int,pageNumShow:int,eventName:String):void{
?? ??? ??? ?this.pageSize=pageSize;
?? ??? ??? ?this.totalRecordSize=totalRecordSize;
?? ??? ??? ?this.pageNumShow=pageNumShow;
?? ??? ??? ?this.eventName=eventName;
?? ??? ??? ?countTotalPageSize();
?? ??? ??? ?this.currentPage=currentPage;
?? ??? ??? ?createNavBar(this.currentPage);
?? ??? ??? ?setNavInfo();
?? ??? ??? ?
?? ??? ?}
?? ??? ?/**
?? ??? ? * 创建各分页
?? ??? ? **/
?? ??? ?public function createNavBar(currentPage:int):void{
?? ??? ??? ?//得知总页数、当前页数、每页显示页码数后就可以设置上一页和下一页
?? ??? ??? ?//上一页
?? ??? ??? ?this.prePage=this.currentPage-1>0?this.currentPage-1:1;
?? ??? ??? ?//下一页
?? ??? ??? ?this.nextPage=this.currentPage+1<=this.totalPageSize?this.currentPage+1:this.totalPageSize;
?? ??? ??? ?this.pageNumData.removeAll();
?? ??? ??? ?if(this.totalPageSize<=this.pageNumShow){//1.总页数小于设定的页码数pageNumShow时,显示所有页码
?? ??? ??? ??? ?for(var i:int=0;i<this.totalPageSize;i++){
?? ??? ??? ??? ??? ?//确保小于总页数,否则退出循环
?? ??? ??? ??? ??? ?this.pageNumData.addItem({label: 1+i,data: 1+i});
?? ??? ??? ??? ?}
?? ??? ??? ?}else{
?? ??? ??? ??? ?if(this.totalPageSize-this.currentPage+1<=this.pageNumShow){//2.剩余页码数(this.totalPageSize-this.currentPage+1)小于设定页码数pageNumShow,补全页码
?? ??? ??? ??? ??? ?for(var i:int=this.totalPageSize-this.pageNumShow+1;i<=this.totalPageSize;i++){
?? ??? ??? ??? ??? ??? ?//确保小于总页数,否则退出循环
?? ??? ??? ??? ??? ??? ?this.pageNumData.addItem({label: i,data: i});
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}else{
?? ??? ??? ??? ??? ?for(var i:int=0;i<this.pageNumShow;i++){//3.当前页码+设定页码数小于totalPageSize时,正常滚动
?? ??? ??? ??? ??? ??? ?//确保小于总页数,否则退出循环
?? ??? ??? ??? ??? ??? ?if(this.currentPage+i<=this.totalPageSize){
?? ??? ??? ??? ??? ??? ??? ?this.pageNumData.addItem({label: this.currentPage+i,data: this.currentPage+i});
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?setFirstPageAndLastPage();
?? ??? ?}
?? ??? ?/**
?? ??? ? *?? ?设置分页条上的分页统计信息
?? ??? ? **/
?? ??? ?public function setNavInfo():void{
?? ??? ??? ?//设置界面上的分页统计数据
?? ??? ??? ?this.curPageLabel.text=this.currentPage.toString();
?? ??? ??? ?this.totalPageLabel.text=this.totalPageSize.toString();
?? ??? ??? ?this.countRecordSizeLabel.text=this.totalRecordSize.toString();
?? ??? ??? ?this.pageNav.dataProvider=this.pageNumData;
?? ??? ?}
?? ??? ?/**
?? ??? ? * 清空orgData中的数据,此数据用于在界面展示
?? ??? ? **/
?? ??? ?public function clearOrgData():void{
?? ??? ??? ?this.orgData.removeAll();
?? ??? ?}
?? ??? ?/**
?? ??? ? *?? ?绑定数据到orgData中
?? ??? ? **/
?? ??? ?public function setOrgData(data:Object):void{
?? ??? ??? ?this.orgData.addItem(data);
?? ??? ?}
?? ??? ?/**
?? ??? ? * 清空分页条
?? ??? ? **/
?? ??? ?public function clearPageNumData():void{
?? ??? ??? ?this.pageNumData.removeAll();
?? ??? ?}
?? ??? ?/**
?? ??? ? *?? ?设定分页条
?? ??? ? **/
?? ??? ?public function setPageNumData(data:Object):void{
?? ??? ??? ?this.pageNumData.addItem(data);
?? ??? ?}

?? ?}
}

-----------------------------------------------------------------------

PageBar.mxml

--------------------------------------

<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009"
?? ??? ? xmlns:mx="library://ns.adobe.com/flex/mx"
?? ??? ? paddingLeft="10"
?? ??? ? backgroundColor="white">
?? ?<fx:Style>
?? ??? ?
?? ??? ?LinkBar {
?? ??? ??? ?borderStyle: none;
?? ??? ??? ?backgroundAlpha: 0.06;
?? ??? ??? ?separatorColor: #c4cccc;
?? ??? ??? ?rollOverColor: #009999;
?? ??? ??? ?selectionColor: #7fcdfe;
?? ??? ??? ?textSelectedColor: #6600cc;
?? ??? ??? ?disabledColor: #33ffff;
?? ??? ??? ?dropShadowEnabled: false;
?? ??? ?}
?? ?</fx:Style>
?? ?<fx:Script>
?? ??? ?<![CDATA[
?? ??? ??? ?import com.adobe.cairngorm.CairngormUtil;
?? ??? ??? ?
?? ??? ??? ?import flash.events.KeyboardEvent;
?? ??? ??? ?
?? ??? ??? ?import fx.model.ModelConfig;
?? ??? ??? ?import fx.util.SimpleAlert;
?? ??? ??? ?
?? ??? ??? ?import mx.collections.ArrayCollection;
?? ??? ??? ?import mx.controls.AdvancedDataGrid;
?? ??? ??? ?import mx.controls.DataGrid;
?? ??? ??? ?import mx.events.ItemClickEvent;
?? ??? ??? ?import mx.utils.ObjectProxy;
?? ??? ??? ?import mx.validators.NumberValidator;
?? ??? ??? ?
?? ??? ??? ?[Bindable]
?? ??? ??? ?public var model:ModelConfig=ModelConfig.getOne();
?? ??? ??? ?//这个地方才是最终要变动的:取famousExamPageBar还是finishedExamBar
?? ??? ??? ?[Bindable]
//?? ??? ??? ?public var pageBar:PageBar=model.famousExamPageBar;
?? ??? ??? ?public var pageBar:PageBar=null;
?? ??? ??? ?
?? ??? ??? ?public var advancedDataGrid:AdvancedDataGrid=null;

//?? ??? ??? ?//页面初始化函数
//?? ??? ??? ?public function getFamouExam(page:int):void{
//?? ??? ??? ??? ?pageBar.params.currentPage=page;
//?? ??? ??? ??? ?//参数处理
//?? ??? ??? ??? ?var params:Object=pageBar.params;
//?? ??? ??? ??? ?
//?? ??? ??? ??? ?//调用事件处理类
//?? ??? ??? ??? ?CairngormUtil.event("FamousExamCD",params);
//
//?? ??? ??? ?}
//?? ??? ??? ?
//?? ??? ??? ?/**
//?? ??? ??? ? * 更新数据源,更新表格显示数据
//?? ??? ??? ? */
//?? ??? ??? ?public function refreshDataProvider():void{
//?? ??? ??? ??? ?//绑定新查询的数据到AdvancedDataGrid
//?? ??? ??? ??? ?advancedDataGrid.dataProvider=pageBar.orgData;
//?? ??? ??? ?}
//
//?? ??? ??? ?
//?? ??? ??? ?
?? ??? ??? ?//页面初始化函数
?? ??? ??? ?public function getDatas(page:int):void{
?? ??? ??? ??? ?//重新设定当前页
?? ??? ??? ??? ?pageBar.params.currentPage=page;
?? ??? ??? ??? ?//参数处理
?? ??? ??? ??? ?var params:Object=pageBar.params;
?? ??? ??? ??? ?
?? ??? ??? ??? ?//调用事件处理类
?? ??? ??? ??? ?CairngormUtil.event(pageBar.eventName,params);
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?/**
?? ??? ??? ? * 页码按钮按下,first,pre,next,last
?? ??? ??? ? */
?? ??? ??? ?private function navigateButtonClick(pageString:int):void{
?? ??? ??? ??? ?//1.重新设置首页、上一页、下一页、尾页
?? ??? ??? ??? ?//3.重新设置每页显示的页码条
?? ??? ??? ??? ?//2.重新填充页面数据
?? ??? ??? ??? ?//pageBar.createNavBar(pageString);
?? ??? ??? ??? ?if(pageBar.totalPageSize == 1){
?? ??? ??? ??? ??? ?new SimpleAlert().show("当前页已包含所有数据!");
?? ??? ??? ??? ??? ?return;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(pageBar.currentPage == pageBar.firstPage && pageString == 1){
?? ??? ??? ??? ??? ?new SimpleAlert().show("已到达首页!");
?? ??? ??? ??? ??? ?return;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ??? ?if(pageBar.currentPage == pageBar.lastPage && pageString == pageBar.lastPage){
?? ??? ??? ??? ??? ?new SimpleAlert().show("已到达尾页!");
?? ??? ??? ??? ??? ?return;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?getDatas(pageString);
?? ??? ??? ?}
?? ??? ??? ?/**
?? ??? ??? ? * 页码按钮按下(页码条点击)
?? ??? ??? ? */
?? ??? ??? ?private function navigatePage(event:ItemClickEvent):void
?? ??? ??? ?{
?? ??? ??? ??? ?//重发数据请求
?? ??? ??? ??? ?getDatas(event.item.data);
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?]]>
?? ?</fx:Script>

?? ?<mx:Label text="第" width="100%"/>
?? ?<mx:Label id="curPageLabel" text="{pageBar.currentPage}" width="100%"/>
?? ?<mx:Label text="页/共" width="100%"/>
?? ?<mx:Label id="totalPageLabel" text="{pageBar.totalPageSize}" width="100%"/>
?? ?<mx:Label text="页 共" width="100%"/>
?? ?<mx:Label id="countRecordSizeLabel" text="{pageBar.totalRecordSize}" width="100%"/>
?? ?<mx:Label text="条记录" width="100%"/>

?? ?<mx:Button id="firstNavBtn" label="首页" click="navigateButtonClick(pageBar.firstPage)"/>
?? ?<mx:Button id="preNavBtn" label="上一页" click="navigateButtonClick(pageBar.prePage)"/>

?? ?<mx:LinkBar id="pageNav" itemClick="navigatePage(event)" dataProvider="{pageBar.pageNumData}"/>
?? ?<!-- <mx:ToggleButtonBar id="pageNav2" itemClick="navigatePage(event)" dataProvider="{pageBar.pageNumData}" dropShadowVisible="false"/> -->
?? ?<mx:Button id="nextNavBtn" label="下一页" click="navigateButtonClick(pageBar.nextPage)"/>
?? ?<mx:Button id="lastNavBtn" label="尾页" click="navigateButtonClick(pageBar.lastPage)"/>
?? ?
</mx:HBox>

-----------------------------------------------------------------------

<paging:CheckBoxDataGrid id="dg" dataProvider="{model.finishedExamPageBar.orgData.toArray()}" horizontalScrollPolicy="on" ??? ??? ??? ??? ??? allowMultipleSelection="true" change="foo.text = dg.selectedIndices.toString()" > ??? ??? ??? ??? ??? <paging:columns> ??? ??? ??? ??? ??? <mx:DataGridColumn dataField="paperId" headerText=" " width="20" ??? ??? ??? ??? ??? sortable="false" itemRenderer="fx.util.CheckBoxRenderer" headerRenderer="fx.util.CheckBoxHeaderRenderer" > ??? ??? ??? ??? ??? </mx:DataGridColumn> ??? ??? ??? ??? ??? <mx:DataGridColumn dataField="paperName" headerText="First Name" /> ??? ??? ??? ??? ??? <mx:DataGridColumn dataField="source" headerText="Last Name" /> ??? ??? ??? ??? ??? </paging:columns> ??? ??? ??? ??? ??? </paging:CheckBoxDataGrid> ??? ??? ??? ??? ??? <mx:Label id="foo" />

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读