Вот пример
- Код: Выделить всё
…
'поле времени начала отсчета
With column
.ColumnName = "StartTime"
.Caption = "Время старта"
.DataType = GetType(System.DateTime)
.DefaultValue = Now
End With
dt.Columns.Add(column)
'поле времени конца отсчета
column = New DataColumn
With column
.ColumnName = "StopTime"
.Caption = "Время останова"
.DataType = GetType(System.DateTime)
'.DefaultValue =
End With
dt.Columns.Add(column)
'поле времени длительности отсчета времени
column = New DataColumn
With column
.ColumnName = "CountdownTime"
.Caption = "Продолжительность"
.DataType = GetType(System.TimeSpan)
.Expression = "IIF(StopTime Is Null, Null, StopTime - StartTime)"
End With
dt.Columns.Add(column)
…
Создаю в таблице два поля StartTime и StopTime типа System.DateTime и поле CountdownTime, в которое должна заносится разница между этими двумя полями, типа System.TimeSpan.
Если поле StopTime пустое, то все работает, а если я пытаюсь задать ему значение, то вычисление выражения "IIF(StopTime Is Null, Null, StopTime - StartTime)", которое прописано в свойстве Expression для поля CountdownTime, дает исключение:
System.Data.EvaluateException was unhandled
Message="Невозможно выполнить операцию "-" над System.DateTime и System.DateTime." …
Или как по-другому можно автоматически считать разницу во времени между двумя полями таблицы?
И еще. Почему в заголовках столбцов DataGridView отображается ColumnName, а не Caption?