我有一个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 = "";
答案 0 :(得分:1)
由于DateTime
是一个不可为空的对象,因此它必须具有值。但是,可以通过将DateTime
声明为可空DateTime
来使 DateTime dt = new DateTime();
为空。
以下是不可为空的日期时间,并且始终具有值。
?
但是,可以通过在类型之后添加DateTime? nullable_dt = new DateTime?();
将其声明为可为空。
nullable_dt
假设null
已设置为datagridview
,nullable_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 = ("");
}