使用DefaultCellStyle.Format设置数据为空时显示空单元格

时间:2012-04-19 18:49:35

标签: c# datagridview

我有一个datagridview。 dgv的数据源是对象的“ReadOnlyCollection”。 'ReadOnlyCollection'中对象的一个​​属性是可以为空的'DateTime'。我要做的是显示一个空白单元格,其中'DateTime'为空,但通过执行以下操作将不同的格式应用于DateTime列:

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 = "";

2 个答案:

答案 0 :(得分:1)

由于DateTime是一个不可为空的对象,因此它必须具有值。但是,可以通过将DateTime声明为可空DateTime来使 DateTime dt = new DateTime(); 为空。

以下是不可为空的日期时间,并且始终具有值。

?

但是,可以通过在类型之后添加DateTime? nullable_dt = new DateTime?(); 将其声明为可为空。

nullable_dt

假设null已设置为datagridviewnullable_dt将显示一个空单元格,其中已分配{{1}}的值。

答案 1 :(得分:0)

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

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