pblandscape 发表于 2017-7-3 14:31:30

如果带公式了,可以不可以做数字校验

如果带公式了,可以不可以做数字校验,如图。

dexteryao 发表于 2017-7-3 16:48:28

不好意思我没有理解您的需求,可否详细描述下

pblandscape 发表于 2017-7-6 15:13:50

已经电话和你们沟通,你看一下如何解决。

dexteryao 发表于 2017-7-6 17:51:13

这个可以在ValueChanged事件里去做,
gcSpreadSheet1.ValueChanged += GcSpreadSheet1_ValueChanged;


      private void GcSpreadSheet1_ValueChanged(object sender, CellEventArgs e)
      {
            if (!string.IsNullOrEmpty(gcSpreadSheet1.ActiveSheet.Cells.Formula))
            {
                MessageBox.Show(e.Column.ToString());
            }
      }

pblandscape 发表于 2017-7-7 13:47:31

      DataValidator NumberValidator = DataValidator.CreateNumberValidator(ComparisonOperator.Between, -999999999999, 999999999999, false);
if (col.ColumnType == ColumnType.Number)
                {
                  cell.DataValidator = NumberValidator;
                  if (string.IsNullOrEmpty(cell.Text))
                  {
                        cell.Value = 0.0;
                  }
                }
怎么让这个又校验公式,又校验数字

dexteryao 发表于 2017-7-10 15:13:29

DataValidator 会验证这个单元格最终的Value,如果是公式,那么也是会验证公式最终计算后的结果。所以即使输入的是公式也可以做公式结果的数字校验。






            gcSpreadSheet1.HighlightInvalidData = true;

            var valid1 = DataValidator.CreateNumberValidator(ComparisonOperator.Between, -999999999999, 999999999999, false);
            gcSpreadSheet1.Sheets.Cells.DataValidator = valid1;
            gcSpreadSheet1.Sheets.Cells.Text = "A number";

pblandscape 发表于 2017-7-10 17:26:40

用您的这个方法做不到弹出。

dexteryao 发表于 2017-7-11 11:41:27

Message 需要您在事件中弹出来。
            gcSpreadSheet1.HighlightInvalidData = true;
            gcSpreadSheet1.ValidationError += GcSpreadSheet1_ValidationError;

            var valid1 = DataValidator.CreateNumberValidator(ComparisonOperator.Between, -999999999999, 999999999999, false);
            valid1.ErrorStyle = ErrorStyle.Stop;
            valid1.ErrorMessage = "请输入数字";
            gcSpreadSheet1.Sheets.Cells.DataValidator = valid1;
            gcSpreadSheet1.Sheets.Cells.Text = "A number";




      private void GcSpreadSheet1_ValidationError(object sender, GrapeCity.Windows.SpreadSheet.UI.ValidationErrorEventArgs e)
      {
            if (e.Validator.ErrorStyle == ErrorStyle.Stop)
            {
                e.ValidationResult = DataValidationResult.Retry;
                MessageBox.Show(e.Validator.ErrorMessage);
            }
      }
页: [1]
查看完整版本: 如果带公式了,可以不可以做数字校验