如何处理异常"指定的演员表无效"

时间:2015-10-09 14:50:06

标签: c# .net infragistics

我使用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。

有两种方法可以解决此问题:

  • 向用户显示一条消息,要求他设置值
  • 如果该字段为空,请设置默认值,如00:00

问我是否需要更多信息。谢谢!

2 个答案:

答案 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非常有用,不需要其他任何东西,希望这对某人有帮助