flex4小技巧笔记

--------mxml文件会忽略字符串中的“\”所以如果需要显示“\”则要使用“\\”




--------as文件中设置样式属性用:id.setStye("fontFamily","Tahoma");




--------url路径问题
 1.绝对路径<mx:Style source="http://WWW.baodu.com">
 2.动态路径<mx:HTTPService url="@ContextRoot()/download/myfile.xml">
 3.编译时路径<mx:Script source="/myscript.as"/>
 4.相对路径<mx:Script source="../myscript.as"/>




-------两种包含as的方法和一种引入的方法
1.<mx:Script source="filename">
<![CDAT[
    .....
]]
 </mx:Script>


2.<mx:Script>
<![CDAT[
   include "filename.as";
    .....
]]
 </mx:Script>


3.<mx:Script>
<![CDAT[
   import myfile.filename.as;
    .....
]]
 </mx:Script>












------前后台交互获取数据
protected function changeHandler(event:IndexChangeEvent):void{
var object:Object=new Object();
object.ID = cb.selectedItem.ID;
var params:URLParameter=new URLParameter();
params.reqBody=object;

Connect.request(
new ConnectParameter
({
url:Global.IP + "loadLinkRoleTree.ajax",
params:params.toParameter(),
callback:function(result:Object,event:Event):void
{
var tt:Object = result.RSP_BODY.taxTree;
fenleitree.dataProvider=result.RSP_BODY.taxTree;
if(result.RSP_BODY.taxTree == null)
{
fenleitree.dataProvider = blankXml;
}
fenleitree.validateNow();
expandTree();

}
})
);


}




------------子模块调用父模块的方法
parentDocument.selectedNode.attribute("label");
parentDocument.方法名();注意:方法一定要是public修饰


-----------父模块调用子模块的变量
直接给父模块中的子模块一个id然后id.变量即可,注意:子模块变量一定要是public修饰








----------prompt属性用于下拉、输入框等控件,用于设置默认值




--------已知单元格行号列号获取单元格值
var item:String =dg.dataProvider.getItemAt(parseInt(row))[dg.columns[parseInt(col)].dataField];




-----------------获得动态生成的空间
var hg:HGroup = myDimensionVGroup.getChildAt(i) as HGroup;
var la:mx.controls.Label=hg.getChildAt(1) as mx.controls.Label;
la.text=obj.dimension;




----------查询条件等,用一个半封闭的框
<jwolib:FieldSet id="infoList" visible="true" includeInLayout="true" title="公司客户信息列表" width="100%" height="100%" cornerRadius="5" horizontalAlign="center">
</jwolib:FieldSet>




----------调用根aplication文件中的方法
var moduleData:IModuleData=new ModuleData();
moduleData.label=item.name;
moduleData.icon=item.icon;
moduleData.url=item.module;
moduleData.uid=item.id;
moduleData.systemId=item.appid;
moduleData.params=item.params;
moduleData.callback=item.callback;
FlexGlobals.topLevelApplication.create(moduleData);

-----调用父页面中方法
解决方法是:打开子页面的时候,传入一个object.page=this;
子页面中定义一个父页面对象 private page1:Page1;,赋值为参数page1=object.page;,
然后用page1.method();即可

-----下拉框调用定义的数据
1.给页面造*.vxml文件,文件中有个<dict>CMIS_ORG_FLAG</dict>标签
2.标签中的值即为edms-fields.xml中定义的映射值
<field id="CMIS_ORG_FLAG">
<const value="0" desc="非信贷机构"/>
<const value="1" desc="信贷机构"/>
</field>
3.在values.properties文件中定义映射值,用于查找
CMIS_ORG_FLAG.0=非信贷机构
CMIS_ORG_FLAG.1=信贷机构


------输入指定的数值(如只能输入0-9的数字)
<mx:TextInput minWidth="200" id="LEASE_ST" restrict="0-9"/>


------输入不超过指定长度 (如长度不超过6)
 <mx:TextInput minWidth="200" id="LEASE_ST" restrict="0-9" maxChars="6"/>
 
------一个动态的牛叉输入框
<jwolib:TextInput id="tCode" width="139" restrict="0-9" maxChars="6" color="white" prompt="点击输入, 回车确认" focusIn="tCode.setStyle('color',0x000000)"
 focusOut="tCode.setStyle('color',0xffffff)" change="if(tCode.text!=''){tCode.prompt=''}else tCode.prompt='点击输入, 回车确认'" clear="tCode.prompt='点击输入, 回车确认'"
 enter="tCode_enterHandler()"/>
 
 
------尴尬的数据值传递
双击一条datagrid记录,由记录中的数据作为参数去后台调用接口查询一个源客户号,把这个客户号加入到双击的记录,初始化弹出的
一个窗口页面,结果客户号能取到,但初始化窗口页面的客户号总是没值!
----原因:中间去调用接口cparams.callback=function(r:Object,event:Event):void{...}是异步的,很慢,系统刚走到这一步,刚知道能
走通,就跳到下一步了,并没有执行{...}函数体内部的内容,所以初始化页面的客户号值老为空
----解决办法:在初始化的窗口页面,客户号下拉框中设置dataProvider={dataArr},init这个页面时候通过后台接口获得并初始化这个dataArr



-----确认弹出框
1.定义两个按钮的值
Alert.okLabel = Global.Alert_Ok_Name;
Alert.cancelLabel = "取消";

2.弹出语句
GuipAlert.confirm("关联为数值,'单位'未选择,是否继续关联?", "提示", GuipAlert.OK | GuipAlert.CANCEL, this, handler);
Alert.confirm("确定删除?", "提示", Alert.OK | Alert.NO, this, handlerFunction);
3.定义handler方法
private function promptResultMappingOpr(event:CloseEvent):void{
if (event.detail == Alert.OK){
ConnectUtil.sendRequest(Global.IP+"excelMapping.ajax",savaObj,loadDataCallback);
}
}


------字符串去除前后空格
var cno:String=StringUtil.trim(obj.CUST_NO);




-----判断是否是中文名字
var chineseNameFlag:Boolean=false;
for(var i:int=0;i<StringUtil.trim(obj.CUST_NAME).length;i++){
var char:String = StringUtil.trim(obj.CUST_NAME).substr(i,1);

if(/[^\x00-\xff]/g.test(char)){
chineseNameFlag=true;
}else{
chineseNameFlag=false;
break;
}

}


-----定义格式化日期的方法
1.在Declarations中声明一个格式化组件
<fx:Declarations>
<mx:DateFormatter formatString="YYYYMMDD" id="formatter"/>
</fx:Declarations>

2.在方法中就可以像下面这样使用
public function productCreateTime_formatDate(currentDate:Date):String {
return formatter.format(currentDate);
}



--验证
    private function validateItem(event:DataGridEvent):void{
   //如果没有更新数据则直接返回
   if (event.reason == DataGridEventReason.CANCELLED){
       return;
      }  
      var input:TextInput = TextInput(_Grid.itemEditorInstance);
      var newData:String= TextInput(event.currentTarget.itemEditorInstance).text;
      //如果商品查询的输入则验证非空
      if(event.dataField == "notNull" && StringUtil.trim(newData).length<=0){
       event.preventDefault();
          input.errorString="不能为空!";
      }
      //如果是数量则验证必须为数字
      if(event.dataField == "num" && isNaN(Number(StringUtil.trim(newData)))){
        event.preventDefault();
          input.errorString="数字必须为数字!";
          return;
      }
  }



---datagrid的dataProvider作为一个参数传给后台
前台:var dataList:ArrayCollection = datagridId.dataProvider as ArrayCollection;
reqBody["dataList"]=dataList.source;
后台中解析方法:ArrayList<Map> dataList = (ArrayList<Map>) params.get("dataList");
for(Map map : dataList){
if(map.get("branchCusNo")!=null && map.get("branchCusNo").toString()=="true"){
branchCusMap.put(map.get("CUS_NO").toString().substring(0,3),map.get("CUS_NO").toString());
}
}












---flex中新建一个Array,添加和删除元素
branchCusManager.push(branchChar);
branchCusManager.splice(branchCusManager.indexOf(branchChar),1);








---如果想动态改变datagrid的内容值,把datagrid的dataProvider做成一个[Bindable]  dataList:ArrayCollection;
如:ListDg.selectedItem.Name="张三",
ListDg.dataProvider=dataList;





---确认框
Alert.show("确认要删除吗?","删除提示",Alert.YES|Alert.NO,this,deleteOpr);


private function deleteOpr(event:CloseEvent):void{
if(event.detail==Alert.YES){
var cparams:Object=new Object();
cparams.url=Global.IP + "deleteProjectInfo.ajax";
var reqBody:Object=loanListDg.selectedItem;
var params:URLParameter=new URLParameter();

params.reqBody = reqBody;
cparams.params=params.toParameter();
cparams.callback=function(r:Object,event:Event):void{
var rspBody:Object=r["RSP_BODY"];
if(r.RSP_HEAD.TRAN_SUCCESS==SystemConstants.YES){
Alert.show("删除成功", "提示");
} else {
Alert.show("删除失败", "提示");
}
qryLoanProtocolInfo();
};
Connect.request(new ConnectParameter(cparams));
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值