找回密码
 立即注册

QQ登录

只需一步,快速开始

ahljxwy

银牌会员

27

主题

67

帖子

3969

积分

银牌会员

积分
3969

活字格认证

ahljxwy
银牌会员   /  发表于:2012-10-17 15:42  /   查看:6320  /  回复:5
<script language="javascript" type="text/javascript" id="FpSpread1_Script0">
        function FpSpread1_EditStopped(event) {
            //Add code to handle your event here.
            var spread = this.document.getElementById("FpSpread1");
            spread.
            var val = spread.GetValue(0, 0);
            val = round(val, 2);
            spread.SetValue(0, 0, val, true);
        }

        function round(v, e) {
            var t = 1;
            for (; e > 0; t *= 10, e--);
            for (; e < 0; t /= 10, e++);
            return Math.round(v * t) / t;
        }
        </script>

第一个单元格编辑完成后,我用以上代码可以设置这个单元格的小数位是两位
我现在想实现的效果是:如果某一列是double列,当这个列中的任一个单元格完成编辑后,用JS代码去设置这个单元格的小数位(前提是这个单元格是double类型的),并根据这一列的NumberDecimalDigits去设置列的小数位,请问代码该怎么写?谢谢

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-10-17 17:54:00
沙发
回复 1楼ahljxwy的帖子

前台代码:

  1.      <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  2.         function FpSpread1_EditStopped(event) {
  3.             var spread = this.document.getElementById("FpSpread1");
  4.                   
  5.                     var row = spread.ActiveRow;
  6.                     var col = spread.ActiveCol;
  7.                     if (col == <%=doubleColumnIndex %>) {
  8.                         var val = spread.GetValue(row, col);
  9.                         val = round(val, <%=decimalNo %>);
  10.                         spread.SetValue(row, col, val, true);
  11.                     }
  12.                 }
  13.          function round(v, e) {
  14.             var t = 1;
  15.             for (; e > 0; t *= 10, e--);
  16.             for (; e < 0; t /= 10, e++);
  17.             return Math.round(v * t) / t;
  18.         }
  19.     </script>
复制代码

后台代码:

  1. public int doubleColumnIndex= 0;
  2.         public int decimalNo = 0;

  3.         protected void Page_Load(object sender, EventArgs e)
  4.         {
  5.             if (IsPostBack)
  6.             {
  7.                 return;
  8.             }
  9.             FarPoint.Web.Spread.DoubleCellType dbType = new FarPoint.Web.Spread.DoubleCellType();
  10.             dbType.DecimalDigits = 2;
  11.             this.FpSpread1.Columns[0].CellType = dbType;
  12.             //设置前途判断标识
  13.             decimalNo = dbType.DecimalDigits;
  14.             doubleColumnIndex = 0;
  15.         }
复制代码
回复 使用道具 举报
ahljxwy
银牌会员   /  发表于:2012-10-18 09:14:00
板凳
var row = spread.ActiveRow;

还有个问题请教一下:为有什么在这行代码中,我写完了spread再敲入一个.之后,没有自动出现ActiveRow呢?
回复 使用道具 举报
ahljxwy
银牌会员   /  发表于:2012-10-18 09:15:00
地板
还有就是如何能根据ActiveRow判断这一列的数据类型是什么呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-10-18 09:23:00
5#
回复 3楼ahljxwy的帖子

Spread JS 智能提示功能可以参考:http://gcdn.grapecity.com/showtopic-2544.html
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-10-18 09:23:00
6#
回复 4楼ahljxwy的帖子

DoubleCellType 无法通过前台判断。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部