【问题标题】:How to edit datetime value in datagridview without datetimepicker?如何在没有 datetimepicker 的情况下在 datagridview 中编辑 datetime 值?
【发布时间】:2015-12-27 15:23:11
【问题描述】:

我在 datagridview 中有一个日期时间列,并以自定义格式显示它:dd/MM/yyyy HH:mm:ss

我想编辑 datetime 值,所以我尝试添加一个 datetimepicker 控件,如果正确选择了值,它就可以工作。 (但我觉得效率不高)。

有时会接受无效值,并且 dgv_dataerror 事件会无限发生,而不允许我更改值。

例如,当我使用键盘箭头键从一个单元格移动到另一个单元格时,如果我不小心按了空格键,则单元格值变为空,并且无限发生 dataerror 事件。

是否有任何替代解决方案可以在不使用 datetimepicker 控件来更改日期时间值的情况下实现此目的?

【问题讨论】:

    标签: c# winforms datetime datagridview datetimepicker


    【解决方案1】:

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

    它使用 DateTime 选择器创建一种 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 的优点是,当客户端具有不同的区域设置时,它会动态变化...

    【讨论】:

    • 这是我所期待的。但是,这里的列是动态添加的。如果 datagridview 是从数据表中填充的,我该如何实现这种行为?
    • 如何将此日历单元格模板应用于 datagridview 中的日期时间列?我尝试为 datetime 列设置日历单元格模板,它仅在对 datagridview 中的任何列进行排序后才有效。 dgv.Invalidate() 没有做这项工作。
    • 通过删除和添加列...也许您可以发布您的代码?
    • stackoverflow.com/questions/34550178/…查看这个链接,我已经单独发布了一个问题。请帮忙。
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多