仅将日期从datagridview调用到文本框

时间:2017-08-24 08:42:00

标签: c# winforms

 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)仍然出现。我可以知道这个问题的解决方案是什么?

enter image description here

2 个答案:

答案 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