C# WPF-在DataGrid中插入记录的自定义验证规则
现在我有一个窗口来操作我的一个DB表中的记录,它看起来像: 我从C# WPF-在DataGrid中插入记录的自定义验证规则,c#,wpf,datagrid,dataset,C#,Wpf,Datagrid,Dataset,现在我有一个窗口来操作我的一个DB表中的记录,它看起来像: 我从数据源选项卡中拖动该DataGrid控件,得到了该控件。该数据源实际上是我在VS 2015中创建的一个数据集项,这意味着一些强类型的数据库操作类是在.xsd文件中自动生成的。因此,您可以看到,基本上,这个Datagrid背后的所有内容都是自动生成的,包括xaml和C#代码。 默认情况下,插入新记录时,将对照其类型检查您在单元格中键入的数据,如果您键入的内容与预期不符,则第一个单元格中将显示红色感叹号。例如,我的表格中的IRD列是
数据源
选项卡中拖动该DataGrid
控件,得到了该控件。该数据源实际上是我在VS 2015中创建的一个数据集
项,这意味着一些强类型的数据库操作类是在.xsd文件中自动生成的。因此,您可以看到,基本上,这个Datagrid
背后的所有内容都是自动生成的,包括xaml和C#代码。
默认情况下,插入新记录时,将对照其类型检查您在单元格中键入的数据,如果您键入的内容与预期不符,则第一个单元格中将显示红色感叹号。例如,我的表格中的IRD列是int类型,如果您键入数字以外的符号,您将得到红色感叹号
我现在想做的是,限制用户键入8到9位数字,例如,如果用户只键入3位数字:346,他/她将看到红色感叹号,并且无法继续插入记录。您使用
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";
}
}
}
谢谢@stepp,我相信我们需要更多,仅仅设置列错误不足以阻止记录插入DataTable.rows集合。我试过了。@VincentZHANG,请随便问任何问题。如果您觉得我的回复对您有帮助,那么您可以将我的回复标记为答案,以简化将来对其他人的搜索。请看这个