【问题标题】:How do I display MM/dd/yyyy (no time) in my DataGridView column?如何在我的 DataGridView 列中显示 MM/dd/yyyy(没有时间)?
【发布时间】:2015-03-25 03:18:39
【问题描述】:

我需要有关 DataGridView 列日期格式的帮助。我希望日期为“MM/dd/yyyy”。我不需要时间。

如何以编程方式完成?

我试过这段代码,但它不起作用gridView.Columns[1].DefaultCellStyle.Format = "MM/dd/yyyy";

`var connSettings = ConfigurationManager.ConnectionStrings["MyDB"]; { 字符串 CN = connSettings.ConnectionString;

            MySqlConnection conn = new MySqlConnection(CN);

            MySqlCommand cmd = new MySqlCommand("select id, entry_datetime, CONCAT(last_name, ' ' ,first_name, ' ' ,alias) as Name/Code from members order by entry_datetime desc;", conn);

            MySqlDataAdapter data = new MySqlDataAdapter(cmd);
            conn.Open();

            DataTable dt = new DataTable();
            data.Fill(dt);
            gridView.DataSource = dt;


        }


        gridView.Columns[0].Width = 120;
        gridView.Columns[0].HeaderText = "ID";
        gridView.Columns[1].Width = 120;
        gridView.Columns["entry_datetime"].DefaultCellStyle.Format = "MM/dd/yyyy";
        gridView.Columns[1].HeaderText = "Date Received";
        gridView.Columns[2].HeaderText = "Name/Code";`

【问题讨论】:

  • 我正在使用 C# win forms
  • 我试过你的代码,它对我来说很好用。你确定你引用了正确的列吗?列是从 0 开始的,因此索引 1 指的是第二列。
  • 我不确定您是如何在不使用 DataBind() 方法的情况下获取数据的。无论如何,请您也粘贴设计器代码吗?
  • 我认为如果dgv.AutoGenerateColumns 为真,那么当重新分配数据源时,您将丢失所有样式和格式属性。所以在调试模式下,检查DefaultCellStyle.Format 是否仍然设置。

标签: c# winforms datagridview date-format


【解决方案1】:

最简单的方法是使用DateTime.ToShortDateString()DateTime.ToLongDateString()

如果这些格式都不起作用,请查看DateTime.ToString(string)

【讨论】:

  • 我试过这段代码,但它不起作用codegridView.Columns[1].DefaultCellStyle.Format = "MM/dd/yyyy";code
【解决方案2】:

设置DataGridViewDataSource后,设置所需的列格式:

dataGridView1.Columns["dateReceived"].DefaultCellStyle.Format = "MM/dd/yyyy";

【讨论】:

  • 我已经试过这个codegridPatient.Columns["entry_datetime"].DefaultCellStyle.Format = "MM/dd/yyyy";code 仍然显示“12:00”时间,可能是什么问题?
【解决方案3】:

如果您尝试格式化数据绑定列,则应使用 DefaultCellStyle.Format。确保 Format 属性的值没有在 Designer 上被覆盖。

下面的代码可以正常工作:

        Random rnd = new Random();

        dataGridView1.Columns.Clear();
        dataGridView1.Columns.Add("colDate", "Random Date");
        dataGridView1.Columns["colDate"].DefaultCellStyle.Format = "MM/dd/yyyy";
        dataGridView1.Columns["colDate"].DataPropertyName = "Date";

        DataTable dt = new DataTable();
        dt.Columns.Add("Date", typeof(DateTime));
        for (int i = 1; i <= 10; i++)
        {
            DataRow row = dt.NewRow();
            row["Date"] = DateTime.Now.AddDays(10 - rnd.Next(20));
            dt.Rows.Add(row);
        }
        dataGridView1.DataSource = dt;

【讨论】:

    【解决方案4】:

    您应该在列上使用 DataFormatString 作为 {0:MM/dd/yyyy} 以获得所需的日期格式。

    【讨论】:

    • 对不起。我的错。我没有意识到这是赢形式而不是网络形式。 Gridview 的名字让我很困惑。无论如何,代码都是完美的,应该可以工作。但是,您也可以在设置格式时尝试传递列的索引而不是名称。
    【解决方案5】:

    确保数据库中存储的日期为 DateTime 或 Date DataType。

    如果该字段的数据类型不是日期时间或日期,则无法使用该格式对其进行格式化。在表模式中将数据类型转换为日期类型,或者在 sql 查询中转换日期。

    Select Cast(entry_datetime As DateTime)...
    

    如果字段数据类型是 datetime 并且仍然显示该结果,那么您可以直接在 sql 查询中格式化日期。

    Select CONVERT(VARCHAR(10), entry_datetime, 101) As EntryDate,....
    

    【讨论】:

      【解决方案6】:
      dataGridView1.Columns[0].FormatString = "{0:dd.MM.yyyy}";
      

      只需替换您的列索引[0,1,2...等] 并获得您想要的结果!

      【讨论】:

        【解决方案7】:

        例如。

          gridView.DefaultCellStyle.Format = "dd/MM/yyyy";
        

        试试这个

          gridView.Columns[3].DefaultCellStyle.Format = "dd/MM/yyyy";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-29
          • 2017-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-19
          • 1970-01-01
          • 2014-04-30
          相关资源
          最近更新 更多