找回密码
 立即注册

QQ登录

只需一步,快速开始

Richard.Ma 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-9-24 16:36  /   查看:2981  /  回复:0
您可以使用内置的验证器和操作来验证单元格中的数据。验证器允许您设置验证条件,例如最小值和最大值。这些操作使您可以在验证失败(单元格颜色更改,声音等)时通知用户。
以下为各种类型的验证器:

验证结果可以用以下形式提示


通过一个实例说明,如何使用
客户有以下需求,需要验证当前Sheet中(1,1)单元格中的文本等于文本列表中的某一项,否则验证为错误数据
通过以下方式在界面提示用户,并删除错误数据
1.在右侧显示错误图标
2.弹窗错误弹窗


对于上述需求验证单元格中的文本等于文本列表中的某一项,我们可以用IncludeListValidator
  1. FarPoint.Win.Spread.IncludeListValidator ilist = new FarPoint.Win.Spread.IncludeListValidator();
  2.             ilist.Candidates = new string[] { "Bird", "Deer", "Squirrel", "Lizard" };
复制代码


IncludeListValidator中加入一个IconNotify,以显示错误图标,DoActionReason 属性用于控制错误信息显示的时间。在编辑完成后显示
  1. FarPoint.Win.Spread.IconNotify linen = new FarPoint.Win.Spread.IconNotify();
  2.             linen.Icon = Properties.Resources.Spread;
  3.             linen.IconAlignment = ContentAlignment.MiddleRight;
  4.             linen.IconTip = "数据验证失败";
  5.             linen.DoActionReason = FarPoint.Win.Spread.ValidateReasons.EndEdit;
复制代码


IncludeListValidator中加入一个MessageBoxNotify,用于显示错误弹窗
  1.             ilist.Actions.Add(
  2.                 new MessageBoxNotify() {
  3.                     Icon = MessageBoxIcon.Error,
  4.                     Caption = "错误",
  5.                     Message = "数据验证失败",
  6.                     DoActionReason= ValidateReasons.EndEdit
  7.                 }
  8.             );
复制代码

最后,将此验证器添加到(1,1)单元格中
  1. fpSpread1.Sheets[0].AddValidators(new FarPoint.Win.Spread.Model.CellRange(1, 1, 1, 1), ilist);
复制代码


以上代码,已经实现了错误图标提示和错误弹窗提示

我们还需要删除错误数据
使用CellValidateInfoNeeded事件判断验证是否通过
  1. fpSpread1.CellValidateInfoNeeded += FpSpread1_CellValidateInfoNeeded;
复制代码

另加一个bool变量CellValueisValid 用于保存验证是否通过,然后在FpSpread的Change事件中依据CellValueisValid的值判断是否删除数据
  1. bool CellValueisValid = true;
  2.         private void FpSpread1_CellValidateInfoNeeded(object sender, CellValidateInfoNeededEventArgs e)
  3.         {
  4.             if (!e.IsValid)
  5.             {
  6.                
  7.                 CellValueisValid = false;
  8.             }
  9.         }
  10.         private void FpSpread1_Change(object sender, ChangeEventArgs e)
  11.         {
  12.             if(CellValueisValid == false)
  13.             {
  14.                 fpSpread1.ActiveSheet.ActiveCell.ResetText();
  15.                 CellValueisValid = true;
  16.             }

  17.         }
复制代码


以下为运行结果
image.png987673339.png
image.png247771605.png







0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部