private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
textBox3.Text = row.Cells["StartDate"].Value.ToString();
我正在尝试将日期数据(在数据库中显示为8/24/2017)从datagridview传递到文本框,以显示下图中给出的开始日期。但是,即使数据类型是日期而不是日期时间,时间(上午12:00:00)仍然出现。我可以知道这个问题的解决方案是什么?
答案 0 :(得分:1)
您可以将“StartDate”单元格中的值解析为DateTime
,然后使用ToShortDateString()
方法获取所需的输出:
var startDate = DateTime.Parse(row.Cells["StartDate"].Value);
var startDateDisplay = startDate.ToShortDateString();
注意:请注意Parse
方法使用当前区域性的日期格式,因此如果您使用不同的日期格式,请考虑使用TryParse
方法或使用Parse
方法之一您将提供特定格式的重载。
答案 1 :(得分:0)
检查您的单元格是否包含值,如果包含值,则将其转换为DateTime
(因为它来自数据库,不需要使用解析)。
看一下这个例子
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
if (row.Cells["StartDate"].Value != null)
{
DateTime date = (DateTime) row.Cells["StartDate"].Value;
//now convert DateTime fo any text format you want to use
textBox3.Text = date.ToShortDateString();
//or, you can use some custom format
//textBox3.Text = date.ToString("MM/dd/yyyy");
//textBox3.Text = date.ToString("ddd MM/dd/yyyy");
//etc
}
}
另外,请看一下msdn custom date and time formats