找回密码
 立即注册

QQ登录

只需一步,快速开始

phaeton
金牌服务用户   /  发表于:2015-11-12 11:56  /   查看:5334  /  回复:8
举例说明:

1 在A2这个格子上定义一个FormulaValiator,其中的公式为A2=3。

2 如果我在第二行前面插入一行,A2变成了A3,但FormulaValidator的公式中的单元格引用未跟着变。

3 而格子中定义的普通公式是会跟着位置变化来自动调整单元格引用的。

8 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-11-12 18:06:00
沙发
您好,

按照以下步骤没有重现问题,您看下是否遗漏了重要步骤

2015-11-12_180504.jpg (58.23 KB, 下载次数: 233)
回复 使用道具 举报
phaeton
金牌服务用户   /  发表于:2015-11-13 10:04:00
板凳
回复 2楼frank.zhang的帖子

我在官方的SpreadJS的ExcelAlike例子中复现了。

spreadjs-validator.png
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-11-13 17:58:00
地板
您好,

根据电话沟通的结果,可以参考以下代码
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>SpreadJS Pluggable Sample</title>
  5.     <link href="gcspread.sheets.8.40.20151.5.css" rel="stylesheet" type="text/css" />
  6.     <script src="jquery-1.8.2.min.js" type="text/javascript"></script>
  7.     <script type="text/javascript" src="gcspread.sheets.all.8.40.20151.5.min.js"></script>
  8.     <script type="text/javascript">
  9.     $(document).ready(function() {
  10.         var spread = new GcSpread.Sheets.Spread($("#ss").get(0), {
  11.             sheetCount: 3
  12.         });
  13.         var activeSheet = spread.getActiveSheet();
  14.         activeSheet = spread.getSheet(0);
  15.         spread.highlightInvalidData(true);
  16.         
  17.         var dv = GcSpread.Sheets.DefaultDataValidator.createFormulaValidator("A1>0");
  18.         dv.showInputMessage = true;
  19.         dv.inputMessage = "Enter a value greater than 0 in A1.";
  20.         dv.inputTitle = "Tip";
  21.         activeSheet.setDataValidator(0, 0, dv);
  22.         activeSheet.setValue(0, 0, -1);
  23.         $("#button1").click(function() {
  24.                         activeSheet.addRows(0, 1);
  25.         });
  26.         
  27.         $("#button2").click(function () {
  28.                         alert(activeSheet.getDataValidator(1,0).condition.formula);
  29.         });
  30.     });
  31.     </script>
  32. <body>
  33.         <div id="ss" style="width: 600px; height: 400px; border: 1px solid gray">
  34.         </div>
  35.         <input type="button" id="button1" value="button1"/>
  36.         <input type="button" id="button2" value="button2"/>
  37. </body>
  38. </html>
复制代码
回复 使用道具 举报
phaeton
金牌服务用户   /  发表于:2015-11-17 19:23:00
5#
回复 4楼frank.zhang的帖子

多谢!
回复 使用道具 举报
phaeton
金牌服务用户   /  发表于:2015-11-17 19:26:00
6#
回复 4楼frank.zhang的帖子

公式里的单元格引用地址跟着变了 但校验无法通过。不论在A1还是在A2里输入大于0的值,校验错误依然存在。
spreadjs-v.png
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-11-18 11:56:00
7#
您好,

这个问题已经重现,初步判断是一个BUG,会尽快发给产品组进行确认。

另外,我尝试了下,使用绝对引用是正常的
  1. var dv = GcSpread.Sheets.DefaultDataValidator.createFormulaValidator(&quot;$A$1&gt;0&quot;);
复制代码

不知道您的需求当中是否可以使用绝对引用。
回复 使用道具 举报
phaeton
金牌服务用户   /  发表于:2015-11-18 15:05:00
8#
回复 7楼frank.zhang的帖子

可以,多谢!
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-11-18 17:19:00
9#
不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部