You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C1DataGrid提交新行时进行数据验证?

C1DataGrid 提交新行时的验证实现

首先,不要在属性setter中抛出异常——这种方式会在输入每个字符时触发验证,完全不符合你“仅提交新行时验证”的需求,而且无法有效阻止无效行提交。

下面是两种精准匹配需求的实现方案:

方案1:通过RowEndEdit事件手动验证

RowEndEdit事件会在用户完成行编辑(比如按下Enter、点击其他行提交新行)时触发,正好对应你需要的验证时机。

实现步骤:

  • 给C1DataGrid绑定RowEndEdit事件
  • 在事件处理方法中获取当前行的数据对象,执行自定义验证逻辑
  • 验证不通过时,调用CancelEdit()阻止行提交,并提示错误

代码示例(C#):

private void C1DataGrid_RowEndEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
{
    // 获取当前编辑行的数据模型
    var rowModel = c1DataGrid.Rows[e.Row].DataItem as YourDataModel;
    if (rowModel == null) return;

    // 执行自定义验证规则
    if (!IsRowValid(rowModel))
    {
        // 取消编辑,阻止无效行提交
        c1DataGrid.CancelEdit();
        MessageBox.Show("数据验证失败,请检查输入!");
    }
}

// 自定义验证方法,根据你的业务规则编写
private bool IsRowValid(YourDataModel model)
{
    // 示例:检查单列数据不为空且长度≥3
    return !string.IsNullOrWhiteSpace(model.TargetColumn) && model.TargetColumn.Length >= 3;
}

方案2:基于IDataErrorInfo的行级验证

如果你的数据模型已经实现了IDataErrorInfo,只需调整C1DataGrid的验证模式,就能把验证时机从实时输入改为行提交时触发。

实现步骤:

  1. 让数据模型实现IDataErrorInfo接口,在索引器中编写列验证逻辑
  2. 设置C1DataGrid的ValidationMode为Row,开启行级验证
  3. 开启ShowErrors属性,让控件自动显示错误提示

代码示例:

数据模型实现

public class YourDataModel : IDataErrorInfo
{
    // 你的目标列属性
    public string TargetColumn { get; set; }

    public string Error => null;

    public string this[string columnName]
    {
        get
        {
            if (columnName == nameof(TargetColumn))
            {
                if (string.IsNullOrWhiteSpace(TargetColumn) || TargetColumn.Length < 3)
                {
                    return "输入内容不能为空,且长度至少为3";
                }
            }
            return null;
        }
    }
}

配置C1DataGrid

// 设置验证模式为行级,仅在提交行时触发验证
c1DataGrid.ValidationMode = C1.Win.C1FlexGrid.ValidationMode.Row;
// 开启错误提示,让控件自动显示验证失败信息
c1DataGrid.ShowErrors = true;

这两种方案都能实现“仅提交新行时验证”的需求,并且可以有效阻止无效数据提交。根据你的项目架构选择即可。

内容的提问来源于stack exchange,提问作者MuriTuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:41:24