WPF - DataGrid中记录插入的自定义验证规则

时间:2016-05-26 01:31:13

标签: c# wpf datagrid dataset

现在我有一个窗口来操作我的一个数据库表中的记录,如下所示:

enter image description here

我通过从DataGrid标签拖动来获得此Data Source控件。该数据源实际上是我在VS 2015中创建的DataSet项,这意味着一些强类型数据库操作类是在.xsd文件中自动生成的。所以,你看,基本上,这个Datagrid背后的一切都是自动生成的,包括xaml和C#代码。 enter image description here enter image description here

默认情况下,当您插入新记录时,将根据其类型检查您在单元格中键入的数据,如果您输入的内容不符合预期,则会在第一个单元格中显示红色感叹号。例如,我的表中的IRD列是int类型,如果键入除digit之外的某些符号,则会得到该红色感叹号。

我现在要做的是将用户类型限制在8到9位数,例如,如果用户只输入3位数字:346,他/她会看到红色感叹号,并且无法继续插入记录。

1 个答案:

答案 0 :(得分:1)

我对DataTable使用ItemsSource作为DataGrid我是对的吗?如果是,那么让我展示一下如何验证你的细胞:

this.YourDataTable.ColumnChanging += YourDataTableColumnChangingStuff;

private void YourDataTableColumnChangingStuff(object sender, DataColumnChangeEventArgs e)
{
   private void EmployeeDataTable_ColumnChanging(object sender, DataColumnChangeEventArgs e)
    {
         //if you want to leave previous value 
        if ("incorrect value" != e.ProposedValue.ToString())
            e.ProposedValue = e.Row.ItemArray[e.Column.Ordinal];
        else
        {
            //if you want to set new value
            e.ProposedValue = "new value";
        }            
    }
}