找回密码
 立即注册

QQ登录

只需一步,快速开始

raul1122

中级会员

42

主题

155

帖子

980

积分

中级会员

积分
980

活字格认证微信认证勋章

raul1122
中级会员   /  发表于:2013-5-17 11:53  /   查看:6953  /  回复:8
我现在要做一个录入界面,要实现如果用户修改了spread上的单元格,不点击保存按钮,退出时给出提示
我的方法是在页面刚加载完成的时候,使用Jquery获得卡片生成在客户端的html代码,使用用户控件保存起来,
然后在onbeforeunload事件下再次获得Spread的Html,进行对比,给出提示,
但是现在面临的问题是,如果我只修改普通的单元格,获取的html是相同的
如果我修改了卡片中设置了计算公式的单元格,获取的html就是不相同的,
请问这个问题怎么解决?

8 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-5-17 16:24:00
沙发
回复 1楼raul1122的帖子

你好,

如果前台修改了单元格,html 源码应该会改变的。有没有查看在浏览器中源码是否发生变化?

是不是有必要每次都对比整个 table 的 html 源码呢?
在前台:修改普通单元格时,我们可以触发前台 onEditStart 和 onEditStopped 事件,用于标记是否改变。
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-5-20 08:50:00
板凳
修改了一些指定的单元格html源码才改变,只修改普通单元格并未改变,如何监听前台 onEditStart 和 onEditStopped 事件呢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-20 11:14:00
地板
回复 3楼raul1122的帖子

你好,
监听代码如下:

  1.     <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  2.         window.onload = function () {
  3.             var flag = this.document.getElementById("HiddenField1");
  4.             flag.value = false;
  5.         }

  6.         var preCellValue = '';
  7.         function FpSpread1_EditStart(event) {
  8.             //Add code to handle your event here.
  9.             var spread = this.document.getElementById("FpSpread1");
  10.             var col = spread.ActiveCol;
  11.             var row = spread.ActiveRow;

  12.             preCellValue = spread.GetValue(row, col);

  13.         }

  14.         function FpSpread1_EditStopped(event) {
  15.             //Add code to handle your event here.
  16.             var flag = this.document.getElementById("HiddenField1");

  17.             var spread = this.document.getElementById("FpSpread1");
  18.             var col = spread.ActiveCol;
  19.             var row = spread.ActiveRow;
  20.             var curCellValue= spread.GetValue(row, col);
  21.             var flag = this.document.getElementById("HiddenField1");
  22.             if (preCellValue != curCellValue) {
  23.                 flag.value = true;
  24.             }
  25.         }
  26.     </script>
复制代码
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-5-21 09:25:00
5#
嗯,我试一下
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-21 10:51:00
6#
回复 5楼raul1122的帖子

好的
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-5-21 16:57:00
7#
我把Spread封装到了用户控件中,使用上面的代码怎么一直都是false
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-5-21 17:22:00
8#
我把你的代码试了一下,使用Spread加载我们画好的卡片模板,隐藏控件的值一直都是false,而且上面的2个事件也没有触发
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-21 18:25:00
9#
回复 8楼raul1122的帖子

请你使用我的 Demo 测试:
测试环境 VS 2010 &amp;&amp; Spread Studio .NET &amp;&amp; .NET 4.0

9080-web.zip (3.28 MB, 下载次数: 141)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部