您的位置:首页 > 编程语言 > Java开发

java与flex开发历程--所遇问题

2012-05-28 11:35 246 查看
1,级联问题:在项目开发过程中,事件监听的添加和删除很重要,不然会导致一级数据老被刷新。

代码如下:

private function init():void{

srv = new RemoteObject();

srv.destination="DefectQueryAction";

srv.getDsjmc();

srv.addEventListener(ResultEvent.RESULT,getDsjName);

}

private function getDsjName(event:ResultEvent):void{

comArray = event.result as ArrayCollection;

// var coyeArray:* = clone(comArray);

dsjmc.dataProvider = comArray;

srv.removeEventListener(ResultEvent.RESULT,getDsjName);//需要加删除监听,不然会出现数据问题

2,DateField格式化成中文

<mx:DateField id="xqend" yearNavigationEnabled="true"

dayNames="[日,一,二,三,四,五,六]"

monthNames="[一月,二月,三月,四月,五月,六月,七月,八月,九月,十, 十一月,十二月]"

formatString="YYYY/MM/DD"/>

3,执行([analysis]SELECT T.DSJMC,T.XJMC,T.DYDJMC,T.TYRQ TYTIME,T.RL,T.ZBTS,T.EVENTTYPE BDLXMC,T.CHANGETIME BDTIME,T.BDSDM BDZDM,T.BDSMC BDZMC FROM F_PM_SUBSTATION_CHANGE T WHERE 1=1 AND T.DSJMC = '邢台供电公司')语句错误,错误信息(17003:无效的列索引)

这个问题是公司框架中没有找到需要带入值的列

4,DataGrid 中DataGridClumn中数据格式话问题 使用labfunction,如下:

<mx:DataGridColumn headerText="投运日期" dataField="tytime" labelFunction="dataGridDateFormat"/>

private function dataGridDateFormat(item:Object,column:Object):String{

var year:String = item[column.dataField].substr(0,4);

var mon:String = item[column.dataField].substr(4,2);

var day:String = item[column.dataField].substr(6,2);

return year+"-"+mon+"-"+day;

}

5,DataGrid实现双击查看信息

(1)doubleClickEnabled="true" itemDoubleClick="queryParticular(event)";这个doubleClickEnabled="true"必须要写

(2)private function queryParticular(event:ListEvent):void{

var item:Object = DataGrid(event.target).selectedItem as Object;

var bdz:String = item.bdzdm;

Alert.show(bdz);

subinfo = new subStationinfo();

PopUpManager.addPopUp(subinfo,this,false);

PopUpManager.centerPopUp(subinfo);

subinfo.addEventListener(CloseEvent.CLOSE,subinfo_closeHandler);

}

6,父窗口向子窗口中传值(转)

var login:infoChange=infoChange(PopUpManager.createPopUp( this, infoChange , true));

login.x=250;

login.y=150;

login.userid.text=dg.selectedItem.aa;

login.username.text=dg.selectedItem.bb;

login.interest.text=dg.selectedItem.cc;

login.birthday.text=dg.selectedItem.dd;

login是子窗口,userid.text,username.text,interest.text,birthday.text是子窗口的四个textinput,其他控件类似使用就可以了。dg.selectedItem.aa等等是父窗口中datagrid控件的值

7,在Flex中使用ModuleLoder来加载或切换多个Module时,常常会出现“TypeError: Error #1034: 强制转换类型失败”的问题。 出现这种错误的原因在于 ModuleLoader shared code problem 当Module中使用managers时(如PopUpManager,DragManager,
HistoryManager等)则可能出现这个问题,当application里在loader之前没有引入这些manager的引用时,manager的方法是静态方法,整个应用程序中创建了一个该manager接口的singleton实例,但module仅在自己的 Application domain中使用该单例, 当多个module使用同一个单例manager且main application没有使用时,就会出现这个空对象引用问题。第一个引入某manager的module不能将该manager接口的 singleton跟其他module共享,其他module调用该Manager的方法时,应用程序不会再创建该manager接口的实例,这个
module就无法引用到该manager接口的实例,就出现了空对象引用问题. 解决方法:在ModuleLoader 的creationComplete方法中加入如下代码: moduleLoader.applicationDomain= ApplicationDomain.currentDomain;就可以在Application里切换多个module而不需要在Application里明文引用单例manager声明。另外,推荐在moduleloader做切换的时候,加上:moduleLoader.unloadModule再做moduleLoader.loadModule()。

8,amf通道问题,在本地flex程序发布到远程机的时候,注意AMF通道问题,{工程名/messagebroker/amf},还有用公司平台sysadmin访问不到数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: