1.在flex里面显示查询后的list集合数据
//全局配置类
private var model:ModelConfig=ModelConfig.getOne();
ModelCong类中存放一些全局的东西要实现接口implements IModelLocator
(如public var root:String=" http://192.168.1.68:8090/OA ";--系统数据,
public var users:UsersVO=new UsersVO();用来存储信息的变量,
public var tiaomaLogTing:ArrayCollection=new ArrayCollection();//List集合用来存放类似与users的JAVABEAN实体对象)
ModelConfig.as
---------------------------------------------
package fx.model
{
import com.adobe.cairngorm.model.IModelLocator;
import fx.util.PageBar;
import fx.util.Pages;
import mx.collections.ArrayCollection;
import spark.components.TitleWindow;
import spark.components.WindowedApplication;
[Bindable]
/**
*配置所有需要的model类
* @author Administrator
*
*/
public class ModelConfig implements IModelLocator
{
//系统数据
public var root:String="http://localhost:8090/flexserver";
public const ISDEPLOY:Boolean=true;
public var states:String="loginState";
public var message:String="";
//远端服务器地址
public var root:String="http://10.1.0.155:8081/test";
//公用
public var rootWin:WindowedApplication;
public var loginViewWin:TitleWindow;
public var mainViewWin:TitleWindow;
public var doEvaluateVO:DoEvaluateVO;
/////////////////////////////////////////////////////////////////
private static var one:ModelConfig;
public static function getOne():ModelConfig
{
if (one == null)one = new ModelConfig();
return one;
}
public function ModelConfig()
{
//if (one !=null )throw new Error( "Only one should be instantiated" );
}
}
}
页面上的数据展示:
因为ModelConfig声明称Bindable ,所以才能在mxml上使用{ model.tiaomaLogTing }来进行数据绑定
<mx:DataGrid dataProvider=" { model.tiaomaLogTing } " id=" tiaomaList " >
<mx:columns>
<mx:DataGridColumn headerText=" daima " dataField=" daima " />//daima是JAVABEAN实体类里面的属性
<mx:DataGridColumn headerText=" chongfu " dataField=" chongfu " />
<mx:DataGridColumn headerText=" jieshu " dataField=" jieshu " />
<mx:DataGridColumn headerText=" shuliang " dataField=" shuliang " />
<mx:DataGridColumn headerText=" xftm " dataField=" xftm " />
</mx:columns>
</mx:DataGrid>
2.与后台交互
flex前台要有一个和后台对应的VO用来存储信息
2.1查询query();
creationComplete="query();"//页面加载事件
public function query():void{
var name:String=this.ename.text;
var title:String=this.title.text;
var content:String=this.content.text;
var para:Object={tname:name,
ttitle:title,
tcontent:content,
tsid:sid,
loginname:loginname,
type:'init'};
//调用自己编写的CD类
CairngormUtil.event("TopicListCD ",para);//与后台交互的CD
}
在自己编写的前端控制器类中进行注册:
TopicListCD要在public class CommandConfig extends FrontController中进行注入
add(fx.commands.intalk.TopicListCD);
TopListCD类的代码如下:
public class TopicListCD extends BaseCommand
{
private var ty:String;
// 发送请求到远程服务器端 的方法
override public function execute(event:CairngormEvent):void{
var data:Object=event.data;
data['method']="doSearch";//后台的查询方法
ty=data.type;
var ";// url:String=model.root+"/intalkAction.do 后台对应的Action
CairngormUtil.send(url,this,data);//发送请求到远程服务器端
}
//远程服务器端返回结果处理方法
override public function result(data:Object):void{
var xml:XML=XML(data.result);//得到结果
var topicList:Array=LukaTool.xmlbean(xml.TopicVO,"fx.model.TopicVO"); //后台得到的List集合JAVABEN
model.topicList=new ArrayCollection(topicList); //放入flex页面要显示的list集合里面
if(ty=='init' && ty!=""){
model.topicPage=new Pages(xml.count);//分页对象
}else{
var tem:int=model.topicPage.currentPage;
model.topicPage=new Pages(xml.count);
model.topicPage.currentPage=tem;
}
model.topic=new TopicVO();
}
}
分页类:
package fx.util
{
import mx.controls.Alert;
[Bindable]
public class Pages
{
public var totalrows:int;//总行数
public var currentPage:int;// 当前页数
public var pageSize:int=10;//每页显示行数
public var totalPages:int;//总页数
public var startRow:int;//当前页在数据库中的起始行
public var currentIndex:int=-1;//当前处理序列
public function Pages(_totalrows:int){
if(_totalrows>0){
this.totalrows=_totalrows;
totalPages=totalrows/pageSize;
var mod:int=totalrows%pageSize;
if(mod>0){
totalPages++;
}
currentPage=1;//默认显示第一页
startRow=(currentPage-1)*pageSize;
}
}
//第一页
public function first():void{
currentPage=1;
startRow=0;
}
//下一页
public function next():void{
if (currentPage < totalPages) {
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
}
//上一页
public function previous():void {
if (currentPage == 1) {
return;
}
if(currentPage>0)
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
//尾页
public function last():void {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
//跳转第几页
public function refresh(_currentPage:int) :void{
currentPage = _currentPage;
startRow = (currentPage - 1) * pageSize;
if (currentPage > totalPages) {
last();
}
}
}
}
转自:http://blog.csdn.net/litinghema0725/archive/2010/01/14/5190861.aspx