博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

javascript:eval function

Posted on 2006-09-23 09:43  Kent  阅读(241)  评论(0)    收藏  举报
javascript:eval function

 function UltraWebGridText_AfterExitEditModeHandler(gridName, cellId)
    {
      try
      {     
        var grid = igtbl_getGridById(gridName);
        var cell = igtbl_getCellById(cellId);
       
        /// 1.Find the cell of TotalNet(Be filled after calculation)
        var TotalNet_ColumnKey ='';
        for(var i=0;i<grid.Bands[0].Columns.length;i++)
        {
          TotalNet_ColumnKey = grid.Bands[0].Columns[i].Key;
          if(TotalNet_ColumnKey.indexOf('|TotalNet|') > -1)
          {
            break; //Found!
          }
        }
        if(TotalNet_ColumnKey == '') {return;}
        var TotalNet_ColumnKey_Value = TotalNet_ColumnKey.replace(/\L2/g,'L2Value');
        if(TotalNet_ColumnKey_Value == '') {return;}
        var cell_TotalNet = cell.getRow().getCellFromKey(TotalNet_ColumnKey);
        var cell_TotalNet_Value = cell.getRow().getCellFromKey(TotalNet_ColumnKey_Value);
        if(typeof(cell_TotalNet) == 'undefined' || typeof(cell_TotalNet_Value) == 'undefined') { return; }
       
        /// 2.Get the TotalNet's Formula.
        //alert(TotalNet_ColumnKey);
        var Array1 = TotalNet_ColumnKey.split('|'); // L2|143|../popup/abc.aspx|TotalNet|Column1+Column2,Column1$Column2
        var FormulaStr ='';
        if(Array1.length == 5)
        {
            FormulaStr = Array1[4];
        }
        if(FormulaStr == '') {return;}
       
        /// 3.According to the formula,find all the related columns be calculated.(Split)
        var Array2 = FormulaStr.split(','); //Column1+Column2,Column1$Column2
        var Expression =''; //Calcuation real formula: Column1+Column2
        if(Array2.length ==2)
        {
            Expression = Array2[0];
            if(Expression =='') {return;}
            var ColumnsList = '';
            ColumnsList = Array2[1];
            if(ColumnsList =='') {return;}
            var Array3 = ColumnsList.split('$');
            for(var i=0;i< Array3.length;i++)
            {
                var ColumnName = Array3[i];
                ColumnName = trimAll(ColumnName);
                //alert(ColumnName);continue;
                if (ColumnName != '')
                {
                    //Get the ColumnName's Value
                    var ColumnKey ='';
                    for(var j=0;j<grid.Bands[0].Columns.length;j++)
                     {
                        ColumnKey = grid.Bands[0].Columns[j].Key;
                        if(ColumnKey.indexOf('|' + ColumnName + '|') > -1)
                        {
                            break;
                        }
                     }
                    
                    if(ColumnKey ==''){return;} //If anyone Column can't be found,return!
                    var cell_ColumnKey = cell.getRow().getCellFromKey(ColumnKey);
                    if(typeof(cell_ColumnKey) =='undefined') {return;}
                    var value = cell_ColumnKey.getValue();
                    //alert(value);
                    if(value ==null || trimAll(value) == '')
                    {
                        value = '0'; //Note: must be '0' can't be 0!
                    }
                    Expression = replaceSubstring(Expression,ColumnName,value);
                }
            }
            //Calculate by Javascript
            //alert(Expression);
            var Sum = eval(Expression);
            //alert(Sum);
            cell_TotalNet.setValue(Sum);
            cell_TotalNet_Value.setValue(Sum);
         }  
       }
       catch(e)
       {
       }
    }