zjutwb 发表于 2015-1-8 16:15:00

如何判断?

如下图中,如何判断当前的sheet中有无效的数据,而且最好能得出有几个无效的,并能逐一定位

iceman 发表于 2015-1-8 17:21:00

回复 1楼zjutwb的帖子

可以使用 DataValidator 实现这个Case,测试代码如下:

      public MainPage()
      {
            InitializeComponent();
            gcSpreadSheet1.HighlightInvalidData = true;
            var valid = GrapeCity.Windows.SpreadSheet.Data.DataValidator.CreateListValidator("5,10,15,20");
            gcSpreadSheet1.Sheets.Cells.DataValidator = valid;
            gcSpreadSheet1.Sheets.Cells.Text = "5, 10, 15, and 20 are valid numbers.";

            var valid1 = GrapeCity.Windows.SpreadSheet.Data.DataValidator.CreateNumberValidator(GrapeCity.Windows.SpreadSheet.Data.ComparisonOperator.GreaterThan, "5", "20", true);
            gcSpreadSheet1.Sheets.Cells.DataValidator = valid1;
            gcSpreadSheet1.Sheets.Cells.Text = "A number greater than 5 is valid.";

            var valid2 = GrapeCity.Windows.SpreadSheet.Data.DataValidator.CreateTextLengthValidator(GrapeCity.Windows.SpreadSheet.Data.ComparisonOperator.GreaterThan, "4", "20");
            gcSpreadSheet1.Sheets.Cells.DataValidator = valid2;
            gcSpreadSheet1.Sheets.Cells.Text = "Type more than four characters.";
      }
      List<Cell> cells = new List<Cell>();
      private void gcSpreadSheet1_ValidationError(object sender, GrapeCity.Windows.SpreadSheet.UI.ValidationErrorEventArgs e)
      {
            cells.Add(this.gcSpreadSheet1.ActiveSheet.Cells);
      }

zjutwb 发表于 2015-1-8 18:49:00

是把有错误的cell放进cells里,再查看cells吗?那么,像上面的例子里,我修改了2个,还有一个错误,会自动更新吗?根据你做的测试还有点问题,弱弱的问下,在哪里怎么调用gcSpreadSheet1_ValidationError(object sender, GrapeCity.Windows.SpreadSheet.UI.ValidationErrorEventArgs e)函数?

iceman 发表于 2015-1-9 09:36:00

回复 3楼zjutwb的帖子

我理解你的问题如下:

1.使单元格具有校验功能。
Spread 提供 DataValidator 类用于校验数据,如果错误则在单元格上用红色椭圆标注
2.记录错误数据位置,用于定位单元格。
List<Cell> cells 用于记录错误单元格信息,便于定位。
当你在单元格中输入数据不满足DataValidator 实例校验规则时,则触发ValidationError事件。

以上你可以使用 2# 代码创建新工程测试,在Cells输入“1”查看效果。

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062

zjutwb 发表于 2015-1-9 13:45:00

使单元格具有校验功能这个没问题,就是下面判断当前sheets是否有无效数字还没解决,是用cells.count来判断吗? 怎么用cells?

iceman 发表于 2015-1-9 15:05:00

回复 5楼zjutwb的帖子

是的,你理解的是正确的。

可以在 ValueChanged事件中结合 gcSpreadSheet1.Sheets.IsValid(1, 1, 10)方法进行List中错误项的移除, ValidationError 事件进行list错误项的添加。
页: [1]
查看完整版本: 如何判断?