2015-12-27 40 views
0

我在datagridview的日期时间列和我在自定义格式显示出来:DD/MM/YYYY HH:MM:SS如何在没有datetimepicker的情况下编辑datagridview中的datetime值?

我想编辑日期时间值,所以我尝试添加一个DateTimePicker控制和它的工作原理,如果值被适当选择。 (但我不觉得它是有效的)。

有时无效值被接受并dgv_dataerror事件发生无限的,没有让我改变的价值。

例如,当我保持从一个小区移动到另一个使用键盘的箭头键时,意外如果我按空格键,单元格的值变为空并且dataerror事件发生无限。

是否有任何替代解决方案来实现这一点没有DateTimePicker控件用于更改日期时间价值?

回答

1

我在这里找到了答案: https://msdn.microsoft.com/en-us/library/7tas5c80%28v=vs.110%29.aspx

,它创建的日期时间选择器一类的DataGridViewColumn的...

编辑:如何动态地添加这个自定义列:

 dgvMain.DataSource = bulkImportTable; 
     CalendarColumn col = new CalendarColumn(); 
     col.Name = "DeployDate"; 
     dgvMain.Columns.Remove("DeployDate"); 
     dgvMain.Columns.Add(col); 

     col.DataPropertyName = col.Name; 
     foreach (DataGridViewRow row in dgvMain.Rows) 
     { 
      row.Cells[dgvMain.Columns.Count - 1].Value = DateTime.Now.ToShortDateString(); 
     } 

在这段代码中,我使用了ToShortDateString(),但您可以在这里使用您自己的自定义方法。请务必在定制的CalendarColumn中更改此自定义代码... 使用ShortDateString和LongDateString的优势在于,当客户端具有不同的区域设置时,它会动态更改...

+0

这就是我所期待的。但是,这里的列是动态添加的。如果datagridview从数据表填充,如何实现此行为? –

+0

如何将此日历单元格模板应用于datagridview中的日期时间列? 我试着设置日历时间列的日历单元格模板,它只在对datagridview中的任何列进行排序后才起作用。 dgv.Invalidate()没有完成这项工作。 –

+0

通过删除和添加列...也许你可以发布你的代码? – Rahvin47

相关问题