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