ExtJs WCF 脚本文件 所有例子的引用的JS

UTF-8编码
WCFFunction.js

/**
 * Author by xiaozhuang
 * Date 2007-12-14
 
*/

 
 
// 把从BasicForm获取的Values对象中的Y-m-d型日期转换成WCF的UTC型
     function  ConvertFormValues(obj,fieldname) {  
         
var newResult = new Object(); 
         
for (var rootProp in obj) {  
         
if(fieldname.indexOf(rootProp) != -1){
              
var dt = StrToDate(obj[rootProp]);
              newResult[rootProp] 
= "/Date("+Date.UTC(dt.getFullYear(),dt.getMonth(),dt.getDate())+")/";
         }

         
else if (obj[rootProp] != ""){
              newResult[rootProp] 
= obj[rootProp]; 
             }
 
         }
  
         
return newResult;  
      }
  
      
function  ConvertResponse(obj,fieldname) {  
         obj 
= eval("("+obj+")");
         
for (var prop in obj) {  
              
if (typeof(prop) == 'string' && prop.substr(prop.length-6,prop.length) == 'Result'{  
                  obj 
= this.ConvertResponseDetail(obj[prop],fieldname); 
                  
//o = o[prop]; 
                  break
              }
 
          }
 
          
return obj;
      }
  
    
function  ConvertResponseDetail(obj,fieldname) {  
         
//obj = eval("("+obj+")");
         var newResult = new Object(); 
         
for (var rootProp in obj) {  
         
if(fieldname.indexOf(rootProp) != -1){
              
var dt = eval("new " + obj[rootProp].substr(1,obj[rootProp].length-2));
              newResult[rootProp] 
= DateToStr(dt);
         }

         
else{
              newResult[rootProp] 
= obj[rootProp]; 
             }
 
         }
  
         
return newResult;  
      }
  
     
function  StrToDate(str) {
          
var arys= new Array();
          arys
=str.split('-');
          
var newDate=new Date(arys[0],arys[1]-1,arys[2]); 
          
return newDate;
     }
 
     
function  DateToStr(dt) {
            
var str="";
            
if(dt.getFullYear){
              
var y,m,d;
              y
=formatNumber(dt.getFullYear(),'0000');
              m
=formatNumber((dt.getMonth()+1),'00');  //01-12
              d=formatNumber(dt.getDate(),'00');
              str
= y+"-"+m+"-"+d;
            }

            
return str;
     }

     
/*
 数字格式化函数
“,” (半角的豆号) 如果有的话,看豆号到小数点(如果有的话)前有几位,则按几位划分整数部分
“0”(数字零) 如果该位上没有数字,就补0
“#”(井号) 如果该位上有数字就输出数字,没有则不输出
 
*/

function  formatNumber(number,pattern) {
    
var str            = number.toString();
    
var strInt;
    
var strFloat;
    
var formatInt;
    
var formatFloat;
    
if(/./g.test(pattern)){
        formatInt        
= pattern.split('.')[0];
        formatFloat        
= pattern.split('.')[1];
    }
else{
        formatInt        
= pattern;
        formatFloat        
= null;
    }


    
if(/./g.test(str)){
        
if(formatFloat!=null){
            
var tempFloat    = Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);
            strInt        
= (Math.floor(number)+Math.floor(tempFloat)).toString();                
            strFloat    
= /./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0';            
        }
else{
            strInt        
= Math.round(number).toString();
            strFloat    
= '0';
        }

    }
else{
        strInt        
= str;
        strFloat    
= '0';
    }

    
if(formatInt!=null){
        
var outputInt    = '';
        
var zero        = formatInt.match(/0*$/)[0].length;
        
var comma        = null;
        
if(/,/g.test(formatInt)){
            comma        
= formatInt.match(/,[^,]*/)[0].length-1;
        }

        
var newReg        = new RegExp('(/d{'+comma+'})','g');

        
if(strInt.length<zero){
            outputInt        
= new Array(zero+1).join('0')+strInt;
            outputInt        
= outputInt.substr(outputInt.length-zero,zero)
        }
else{
            outputInt        
= strInt;
        }


        
var 
        outputInt            
= outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null?',':'')+'$1')
        outputInt            
= outputInt.replace(/^,/,'');

        strInt    
= outputInt;
    }


    
if(formatFloat!=null){
        
var outputFloat    = '';
        
var zero        = formatFloat.match(/^0*/)[0].length;

        
if(strFloat.length<zero){
            outputFloat        
= strFloat+new Array(zero+1).join('0');
            
//outputFloat        = outputFloat.substring(0,formatFloat.length);
            var outputFloat1    = outputFloat.substring(0,zero);
            
var outputFloat2    = outputFloat.substring(zero,formatFloat.length);
            outputFloat        
= outputFloat1+outputFloat2.replace(/0*$/,'');
        }
else{
            outputFloat        
= strFloat.substring(0,formatFloat.length);
        }


        strFloat    
= outputFloat;
    }
else{
        
if(pattern!='' || (pattern=='' && strFloat=='0')){
            strFloat    
= '';
        }

    }


    
return strInt+(strFloat==''?'':'.'+strFloat);
}

 
WCFHelper.js

/**
 * Author by xiaozhuang  iamxiazhuang@hotmail.com
 * Date 2007-12-14
 
*/

 
/**
 *ConvertResponseText:转化从WCF获取的Object转化为ExtJS表单需要的Object
 *responsetext:从WCF获取的ObjectJSON字符串
 *datefieldname:JSon中的日期型字段名(属性名),多个用","分开
 *wrapped:JSon字符串是否被封装(WebMessageBodyStyle.Wrapped or WebMessageBodyStyle.Bare)
 *ResultObject :返回值 Object
 
*/

  
function  ConvertResponseText(responsetext,datefieldname,wrapped,isobject)
        
var ResultObject;
        
var obj = eval("("+responsetext+")");
        
if (wrapped)
        
{
         
for (var prop in obj) {  
              
if (typeof(prop) == 'string' && prop.substr(prop.length-6,prop.length) == 'Result'{  //去掉××Result 封装
                   if(isobject){
                        ResultObject 
= ConvertResponseDetail(obj[prop],datefieldname); 
                    }
 else {
                        ResultObject 
= obj[prop]; 
                    }

                  
break
              }
 
          }
 
          }

          
else
          
{
             
if(isobject){
                  ResultObject 
= ConvertResponseDetail(obj,datefieldname); 
             }
 else {
                 ResultObject 
= obj; 
             }

          }

         
return ResultObject;
  }

    
/***私有方法**/
    
function  ConvertResponseDetail(obj,datefieldname) {  
         
var newResult = new Object(); 
         
for (var rootProp in obj) {  
         
if(datefieldname.indexOf(rootProp) != -1){
              
var dt = eval("new " + obj[rootProp].substr(1,obj[rootProp].length-2)); //对UTC日期进行转化
              newResult[rootProp] = DateToStr(dt);//把日期转化为字符串
         }

         
else{
              newResult[rootProp] 
= obj[rootProp]; 
             }
 
         }
  
         
return newResult;  
      }

      
/***私有方法**/   
     
function  DateToStr(dt) {
            
var str = "";
            
if(dt.getFullYear){
              
var y,m,d;
              y 
= dt.getFullYear();
              m 
= dt.getMonth()+1;  //01-12
              d = dt.getDate();
              m 
= m>9?m:"0"+m;
              d 
= d>9?d:"0"+d;
              str
= y+"-"+m+"-"+d;
            }

            
return str;
     }

 
/**
 * Author by xiaozhuang  iamxiazhuang@hotmail.com
 * Date 2007-12-14
 
*/

 
/**
 *ConvertFormValues:转化从表单获取的值(Object)对象为WCF需要的Object
 *formvalue:从表的获取的值Object
 *datefieldname:表单值的日期型字段名,多个用","分开
 *ResultObject :返回值 Object
 
*/

     
function  ConvertFormValue(formvalue,datefieldname) {  
         
var ResultObject = new Object(); 
         
for (var prop in formvalue) {  
         
if(datefieldname.indexOf(prop) != -1){
              
var dt = StrToDate(formvalue[prop]); //字符串转化为日期
              ResultObject[prop] = "/Date("+Date.UTC(dt.getFullYear(),dt.getMonth(),dt.getDate())+")/"//转化为UTC日期
         }

         
else if (formvalue[prop] != ""){
              ResultObject[prop] 
= formvalue[prop]; 
             }
 
         }
  
         
return ResultObject;  
      }
  
     
/***私有方法**/     
     
function  StrToDate(str) {
          
var arys = new Array();
          arys
=str.split('-');
          
var newDate=new Date(arys[0],arys[1]-1,arys[2]); 
          
return newDate;
     }
 

WCFHttpProxy.js
/*
 * Ext JS Library 2.0 
 * Copyright(c) 2006-2007, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 
*/


/**
 * Author by xiaozhuang
 
*/

Ext.data.WCFHttpProxy 
=  Ext.extend(Ext.data.HttpProxy,  {  

    load : 
function(params, reader, callback, scope, arg){
        
if(this.fireEvent("beforeload"this, params) !== false){

            Ext.lib.Ajax.defaultPostHeader 
= 'application/json';
            params 
= Ext.util.JSON.encode(params);
            
var  o = {
                params : params 
|| {},
                request: 
{
                    callback : callback,
                    scope : scope,
                    arg : arg
                }
,
                reader: reader,
                callback : 
this.loadResponse,
                scope: 
this
            }
;
            
if(this.useAjax){
                Ext.applyIf(o, 
this.conn);
                
if(this.activeRequest){
                    Ext.Ajax.abort(
this.activeRequest);
                }

                
this.activeRequest = Ext.Ajax.request(o);
            }
else{
                
this.conn.request(o);
            }

        }
else{
            callback.call(scope
||thisnull, arg, false);
        }

    }

}
);

WCFJsonReader.js
/**   
 * @class Ext.data.WCFJsonReader  
 * @extends Ext.data.JsonReader 
 * 
 * Custom reader for reading data from WCF.  If you are using WebMessageBodyStyle.Wrapped, then WCF adds a root object to your   
 * JSON result: 
 *    
 * { "MethodResult": { "Count" : 0, "Objects": [ … ] } }   
 *  
 * Ext does not expect the result to have a root object before parsing, so this class will remove it.    
 
*/
  
  Ext.data.WCFJsonReader 
=  Ext.extend(Ext.data.JsonReader,  {  
    
/* @cfg {Boolean} Sets whether or not the OperationContract has the is using WebMessageBodyStyle.Wrapped */  
      wrapped: 
true,   
    
/**  
     * If wrapped is set to true, we will strip WCF’s wrap object    
     
*/
  
       read : 
function(response){
        
var json = response.responseText;       
        
        
var o = eval("("+json+")");
        
if(!o) {
            
throw {message: "JsonReader.read: Json object not found"};
        }

      
if (this.wrapped) {  
          
for (var prop in o) {  
              
if (typeof(prop) == 'string' && prop.substr(prop.length-6,prop.length) == 'Result'{  
                  o 
= this.convert(o[prop]); 
                  
//o = o[prop]; 
                  break
              }
 
          }
 
     }
 
     
if(o.metaData)
         
delete this.ef; 
         
this.meta = o.metaData;  
         
this.recordType = Ext.data.Record.create(o.metaData.fields);  
         
this.onMetaChange(this.meta, this.recordType, o); 
     }
  
     
return Ext.data.WCFJsonReader.superclass.readRecords.call(this, o); 
     }

     
//private   
     convert : function(o) {  
         o 
= eval("("+o+")");
         
var newResult = new Object(); 
         
for (var rootProp in o) {  
             newResult[rootProp] 
= o[rootProp];  
         }
  
         
return newResult;  
      }
  
  }
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值