我使用Infragistics创建了一个UltraGrid,其中我有一列Datetime类型,格式为HH:mm。
通常,列中填充的值如下:" 15:13"。我可以编辑它并设置我想要的然后保存。但是,如果我删除该字段,它看起来像是:" _ : _"然后我保存了我的桌子,我收到了一个异常"指定的演员表无效"。
这是因为我试图保存未设置的值。我想知道如何处理这个异常。
我试图把这个场地比作" null"但它不起作用。
var newDuration = (DateTime)row.GetCellValue(3);
if (newDuration == null)
{
MessageBox.Show("Please set all the fields.");
}
列的dataType是System.DateTime,我将默认值设置为DB(DBNull),AllowDBNull是Default。
有两种方法可以解决此问题:
问我是否需要更多信息。谢谢!
答案 0 :(得分:1)
试图获得所需类型值而不确定的典型模式是
var value = someOtherValue as SomeType;
if (value != null)
{
... // value is a correct SomeType here
}
这适用于参考类型。如果结构(DateTime
是结构)是值类型,则必须先检查类型
var value = row.GetCellValue(3);
if(value is DateTime)
{
var dateTime = (DateTime)value;
... // dateTime is a valid DateTime here
}
我的回答并不能解释为什么你会遇到这个问题,但会说明如何避免这个问题(这可能不是一个好主意,但似乎你想要这样做)。
如果您的值可以是DBNull
,那么只需检查一下:
var value = row.GetCellValue(3);
if(value != DBNull.Value)
{
var dateTime = (DateTime)value; // it must work now
...
}
答案 1 :(得分:0)
在wingrid,有一个处理此错误的特定事件,它的datacellerror非常有用,不需要其他任何东西,希望这对某人有帮助