C# 如何自动将日期插入datagridview?

C# 如何自动将日期插入datagridview?,c#,winforms,datagridview,C#,Winforms,Datagridview,[问题解决了,我在底部添加了答案] [原始问题] 如何自动添加要插入datagridview的日期 datagridview没有绑定或源代码到任何SQL server,因为用户将写入datagridview的任何内容都将被提取并转换为pdf表。但是,DataGridView中的日期将使用今天的日期值进行固定 我的最终结果应如下图所示: 我尝试使用下面的代码将日期自动添加到新行中,但没有成功 dt.Rows.Add("CurrentDate",System.Type.GetType("Syst

[问题解决了,我在底部添加了答案]

[原始问题] 如何自动添加要插入datagridview的日期

datagridview没有绑定或源代码到任何SQL server,因为用户将写入datagridview的任何内容都将被提取并转换为pdf表。但是,DataGridView中的日期将使用今天的日期值进行固定

我的最终结果应如下图所示:

我尝试使用下面的代码将日期自动添加到新行中,但没有成功

dt.Rows.Add("CurrentDate",System.Type.GetType("System.DateTime"));
注意-我添加了一个数据表

我还将方法从CellContentClick更改为CellContentDoubleClick

编辑1:

我更新了DGV,因为显然我仍然需要一个数据表作为源来分配以使其工作

这是我的密码:

pretable = new DataTable();
            pretable.Columns.Add("NO", typeof(int));
            pretable.Columns.Add("ID", typeof(string));
            pretable.Columns.Add("LO", typeof(string));
            pretable.Columns.Add("QT", typeof(string));
            pretable.Columns.Add("DA", typeof(DateTime));
            pretable.Columns["DA"].DefaultValue = DateTime.Now;
            pretable.Columns.Add("ER", typeof(string));
            pretable.Columns.Add("RE", typeof(string));
            DataRow row = pretable.NewRow();
            row["DA"] = DateTime.Now;
            pretable.Rows.Add(row);
            dataGridView1.DataSource = pretable;
            dataGridView1.Rows[5].Cells["DACL"].Value = DateTime.Now;
DA=数据表中的日期列

DACL=DGV中日期列的名称

然而,我的结果只添加了一个空行,如下图所示。

[回答]

在前面的Form_Load中,我添加了一个DataTable,但是我发现这个DataTable不需要绑定到DGV作为日期工作的源

因此,我在Form_Load中添加了以下代码

dataGridView1.Rows[0].Cells["DACL"].Value = DateTime.Now.ToString("dd/MM/yyyy");
dataGridView1.Rows[0].Cells["NOCL"].Value = totalRowsN;
这将作为我的第一行编号和日期插入

感谢ZedLepplin提供了基本答案。

我发现DataGridView1\u CellContentDoubleClick的点击次数过多,导致事件无法发生,因此我改为使用DataGridView1\u CellClick,现在插入所需的工作量更少

我使用的代码是:

private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            totalRowsC = dataGridView1.Rows.Count-1;
            totalRowsN = dataGridView1.Rows.Count;
            dataGridView1.Rows[totalRowsC].Cells["DACL"].Value = DateTime.Now.ToString("dd/MM/yyyy");
            dataGridView1.Rows[totalRowsC].Cells["NOCL"].Value = totalRowsN;
        }
这样做的目的是TotalRowsC将是代码的索引值

dataGridView.Rows[Index].Cells[ColumnName]
使其符合编程索引。编程索引从0开始,即使我们看到的行是1。如果我没有在TotalRowsC中减去1,则会出现一个错误,提示我们需要插入一个适合现有索引的值

解决了数据自动化的问题。
谢谢大家的帮助。

要在列中添加日期,您要添加日期的行必须已经存在

因此,假设行存在,并且日期列是文本列,那么这对我来说就行了:-

yourDgvName.Rows[0].Cells["yourColumnName"].Value = DateTime.Today.ToShortDateString();
将DgvName替换为DataGridView控件的名称

将您的ColumnName替换为日期列的名称,或者只使用索引号而不是字符串列名

这将把今天的日期添加到DataGridView控件第一行的date列中


或者,您可以创建一个DataGridView行,将今天的日期添加到该行数据中,然后将该行添加到DataGridView控件。

可能重复datatable的用途,并且它确实只有一列吗?我建议您将dgv中的日期列设置为只读,并在添加新行时设置内容。@Filburt-让我检查一下。@TaW-好的,我明白您所说的仅1列是什么意思。我必须使我的datatable列具有与DGV相同的列数,然后只有我才能基于哪个列写入DGV。对吗?是的,我很困惑。您不是说过DGV不是数据绑定的吗?下面是我在表单_Load```pretable=new DataTable()中的用法;pretable.Columns.Add(“DA”,typeof(DateTime));pretable.Columns[“DA”].DefaultValue=DateTime.Now;DataRow row=pretable.NewRow();行[“DA”]=DateTime.Now;pretable.Rows.Add(row);dataGridView1.DataSource=pretable;dataGridView1.Rows[5]。单元格[“DACL”]。值=日期时间。现在```在这里评论似乎不起作用。让我添加我的问题我已经编辑了我的问题以反映这些变化。添加了一个图像以更好地表示问题我对CellContentDoubleClick的引用感到困惑。您是希望在向数据表中添加数据时添加日期,还是双击某个内容时显示数据?现在我更困惑了,我尝试了您的代码,它对我有效。但是我怀疑我知道为什么。将DataGridView控件添加到表单时,我没有编辑它,只是添加了一个完全空的DataGridView控件。