我正在使用 .NET 4.0 框架开发 WPF 应用程序,并使用 Telerik RadGridView 来显示各种数据。RadGridView 绑定到从 SQL 数据库填充的 Observable 集合。我正在使用 IDataErrorInfo 来处理行验证,但是当我单步执行代码时,大多数 columnNames 似乎是空字符串事件,尽管我知道情况并非如此。我将验证定义如下:
public partial class DataRow : IDataErrorInfo
{
public string Error
{
get { return null; }
}
public string this[string columnName]
{
get
{
return this.GetResult(columnName);
}
}
private string GetResult(string columnName)
{
switch (columnName)
{
case "Column1":
if (string.IsNullOrEmpty(this.Column2))
{
return "Error";
}
break;
case "Column2":
if (string.IsNullOrEmpty(this.Column3))
{
return "Error with Column 2";
}
break;
case "Column3":
break;
case "Column4":
if (!string.IsNullOrEmpty(this.Column4))
{
return "Column 4 is not null or empty";
}
break;
case "Column5":
if (this.Column5 <= 0)
{
return "Column 5 must be greater than zero";
}
break;
default:
break;
}
return null;
}
}
DataRow 的成员在 SQL 数据库中定义。我已经运行并逐步执行了代码,并且一直在进行 Column1 验证和 Column3 验证,但是当调用任何其他列时,columnName 是一个空字符串。我知道是这种情况,因为当我将验证规则修改为如下:
private string GetResult(string columnName)
{
switch (columnName)
{
case "Column1":
if (string.IsNullOrEmpty(this.Column2))
{
return "Error";
}
break;
case "":
return "This column is in error";
break;
default:
break;
}
return null;
}
我在 Column2、Column4 和 Column5 上遇到错误。
到目前为止,我一直无法找到其他人是否遇到过这个问题。任何帮助将不胜感激。
谢谢!