找回密码
 立即注册

QQ登录

只需一步,快速开始

phaeton
金牌服务用户   /  发表于:2015-10-23 12:17  /   查看:4173  /  回复:1
使用下面的校验器校验C2的值:
var dv = GcSpread.Sheets.DefaultDataValidator.createFormulaValidator('and(C2 > -1000000000, C2 < 1000000000)');
dv.ignoreBlank = false;
dv.showInputMessage = true;
dv.inputMessage = "此单元格必填且数字范围必须在-1000000000和1000000000之间";
dv.inputTitle = "tip";

C2这个格子是通过CellBindingSource绑定一个JSON对象里的值,值明明在范围内,但会提示不正确,必须把格子里的值清空,重新填入后校验才会成功。

使用NumberValidator这种方式就没问题。

var dv = GcSpread.Sheets.DefaultDataValidator.createNumberValidator(GcSpread.Sheets.ComparisonOperator.Between, "-1000000000, 1000000000, true);

1 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-10-23 14:37:00
沙发
您好,

我尝试使用以下代码重现这个问题,但是没有报错。
您看下,我是否遗漏了一些重要的步骤
  1.     <script type="text/javascript">
  2.         $(document).ready(function ()
  3.         {
  4.             var spread = new GcSpread.Sheets.Spread($("#ss").get(0), {
  5.                 sheetCount: 3
  6.             });

  7.             var activeSheet = spread.getActiveSheet();
  8.             var dv = GcSpread.Sheets.DefaultDataValidator.createFormulaValidator('and(C2 > 0, C2 < 30)');
  9.             dv.ignoreBlank = false;
  10.             dv.showInputMessage = true;
  11.             dv.inputMessage = "此单元格必填且数字范围必须在0和30之间";
  12.             dv.inputTitle = "tip";

  13.             activeSheet.getCell(1, 2, GcSpread.Sheets.SheetArea.viewport).dataValidator(dv);
  14.             spread.highlightInvalidData(true);

  15.             var person = { name: 'Wang feng', age: 25, sex: 'male', address: { postcode: '710075' } };
  16.             var source = new GcSpread.Sheets.CellBindingSource(person);
  17.             activeSheet.setBindingPath(0, 0, 'name');
  18.             activeSheet.setBindingPath(1, 2, 'age');
  19.             activeSheet.setBindingPath(3, 3, 'sex');
  20.             activeSheet.setBindingPath(4, 4, 'address.postcode');
  21.             activeSheet.setDataSource(source);
  22.         });
  23.     </script>
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部