【发布时间】:2019-08-08 07:23:42
【问题描述】:
[已解决,我已在底部添加答案]
[原问题] 如何自动添加要插入数据网格视图的日期?
datagridview 没有绑定或来源到任何 SQL 服务器,因为用户将写入 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 = DataTable 中的日期列
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_CellContentDoubleClick 需要太多点击才能发生事件,所以我改为使用 DataGridView1_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 将是代码的 Index 值
dataGridView.Rows[Index].Cells[ColumnName]
使其适合编程索引。编程索引从 0 开始,即使我们看到的行是 1。如果我没有在 TotalRowsC 中减一,则会提示错误,说明我们需要插入一个适合现有索引的值。
日期自动化问题已解决。 谢谢大家的帮助。
【问题讨论】:
-
数据表的用途是什么,它真的只有 1 列吗?我建议您将 dgv 中的日期列设置为只读,并在添加新行时设置内容。
-
@Filburt - 让我检查一下。
-
@TaW - 好的,我明白你说的只有 1 列是什么意思。我必须使我的数据表列具有与 DGV 相同的列数,然后只有我可以根据哪一列写入 DGV。对吗?
-
是的,我很困惑。你不是说 DGV 不是数据绑定的吗?
标签: c# winforms datagridview