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

来源:互联网 发布:上财和复旦的差距 知乎 编辑:程序博客网 时间:2024/03/29 01:47

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访问不到数据

原创粉丝点击