2012-04-19 152 views
1

我有一个datagridview。 dgv的数据源是对象的“ReadOnlyCollection”。 'ReadOnlyCollection'中对象的属性之一是可以为空的'DateTime'。我正在试图做的是显示空白小区的情况下“日期时间”为空,但应用不同的格式的日期时间列,这样做:当DefaultCellStyle.Format数据为空时显示空单元格设置

TimeOutColumn.DefaultCellStyle.Format = "MM/dd/yyyy HH:mm"; 

唯一的问题是,将所有我空的条目到DateTime.Min值。

'history'是ReadOnlyCollection。 下面是当前的代码:

'DataGridViewTextBoxColumn TimeOutColumn = new DataGridViewTextBoxColumn(); 
      TimeOutColumn.DataPropertyName = "timeout"; 
      TimeOutColumn.HeaderText = "Time Out";     

      ddgGHistory.Columns.Add(BadgeTypeIDColumn); 
      ddgGHistory.Columns.Add(EmployeeColumn); 
      ddgGHistory.Columns.Add(TimeInColumn); 
      ddgGHistory.Columns.Add(TimeOutColumn); 

      ddgGHistory.DataSource = history 

      ddgGHistory.Columns[3].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm"; 
      ddgGHistory.Columns[3].DefaultCellStyle.NullValue = ""; 

回答

1

由于DateTime是一个非空的对象,它必须有一个值。但是,可以通过将DateTime声明为可以为空的DateTime来使DateTime可以为空。

以下是不可空的日期时间,并将始终有一个值。

DateTime dt = new DateTime(); 

然而,可以由类型之后加入?声明为空。

DateTime? nullable_dt = new DateTime?(); 

假设nullable_dt已经被设置为null,所述datagridview将显示一个空单元格,其中来自nullable_dt值已被分配。

0
batchMembersDataGridView.Rows[e.RowIndex].Cells[16].Value = DateTime.MinValue; 

        if ((DateTime)(batchMembersDataGridView.Rows[e.RowIndex].Cells[16].Value) == DateTime.MinValue) 
        { 
         dataGridViewTextBoxColumn12.DefaultCellStyle.Format = (""); 
        } 
+0

给你的代码一些上下文和格式 – Rafael 2012-10-15 04:22:15

相关问题