如何在 c# windows 应用程序中将日期数据从 datagridview 传输到 datetimepicker
How to transfer date data from datagridview to datetimepicker in c# windows application
我正在使用 c# windows 表单应用程序处理 datagridview,我正在从数据库加载数据,现在我想编辑单元格值并将值保存到数据库,
我的数据库中有日期和时间。
当我单击数据网格视图中的行 header 时,数据会传输到文本框以及日期时间选择器中
数据在文本框中正确复制,但在 datetimepicker 中复制时出现错误消息。
我完成的代码。
private void dgvpbx_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
txtname.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
cmbidentifier.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
txtplace.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
txtcity.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
dtpdate.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString());
dtptime.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString());
}
错误信息是
如果您知道日期和时间在网格中的确切格式,请相应地解析它们:
dtpdate.Value = DateTime.ParseExact(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(),
"dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);
dtptime.Value = DateTime.ParseExact(dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString(),
"HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
从屏幕截图来看,您的两个 DateTimePicker
控件似乎都提供了完整的日期。您可能想要更改这些,以便一个只选择时间而另一个只选择日期。
确保将日期和时间 放入 网格中,使用完全相同的格式将 DateTime 对象转换为字符串:
(其中 i
是您当前正在编辑的索引)
dataGridView1.Rows[i].Cells[5].Value = dtpdate.Value.ToString("dd-MM-yyyy");
dataGridView1.Rows[i].Cells[6].Value = dtptime.Value.ToString("HH:mm:ss");
dtpdate.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString("dd-MM-yyyy"));
dtptime.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString("dd-MM-yyyy"));
我正在使用 c# windows 表单应用程序处理 datagridview,我正在从数据库加载数据,现在我想编辑单元格值并将值保存到数据库, 我的数据库中有日期和时间。
当我单击数据网格视图中的行 header 时,数据会传输到文本框以及日期时间选择器中
数据在文本框中正确复制,但在 datetimepicker 中复制时出现错误消息。
我完成的代码。
private void dgvpbx_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
txtname.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
cmbidentifier.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
txtplace.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
txtcity.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
dtpdate.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString());
dtptime.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString());
}
错误信息是
如果您知道日期和时间在网格中的确切格式,请相应地解析它们:
dtpdate.Value = DateTime.ParseExact(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(),
"dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);
dtptime.Value = DateTime.ParseExact(dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString(),
"HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
从屏幕截图来看,您的两个 DateTimePicker
控件似乎都提供了完整的日期。您可能想要更改这些,以便一个只选择时间而另一个只选择日期。
确保将日期和时间 放入 网格中,使用完全相同的格式将 DateTime 对象转换为字符串:
(其中 i
是您当前正在编辑的索引)
dataGridView1.Rows[i].Cells[5].Value = dtpdate.Value.ToString("dd-MM-yyyy");
dataGridView1.Rows[i].Cells[6].Value = dtptime.Value.ToString("HH:mm:ss");
dtpdate.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString("dd-MM-yyyy"));
dtptime.Value = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString("dd-MM-yyyy"));