2017-05-29 91 views
1

我知道这是一个老问题,但我不明白为什么。DataGridView格式DateTime

我有2个空隙中2个按钮结合GENERATESAVE

private void btn_generate_Click(object sender, EventArgs e) 
{ 
     DateTime startdate = Convert.ToDateTime(textstarteddate.Text); 
     DateTime enddate = new DateTime (startdate.Year, 12, 31); 
     Int64 addedDays = Convert.ToInt64(textdaycount.Text); 
     string taskID = texttaskID.Text; 
     string machine = cb_machineID.Text.Trim(); 
     string note = texttasknote.Text; 
     string runningtime = RMT.Text; 
     string period = cb_periodID.Text.Trim(); 
     _dtdate.Columns.Add(new DataColumn("Maintenance Date", typeof(DateTime))); 
     _dtdate.Columns.Add(new DataColumn("TaskID", typeof(String))); 
     _dtdate.Columns.Add(new DataColumn("Machine", typeof(String))); 
     _dtdate.Columns.Add(new DataColumn("Note", typeof(String))); 
     _dtdate.Columns.Add(new DataColumn("Period", typeof(String))); 
     _dtdate.Columns.Add(new DataColumn("Running Time", typeof(String))); 
     _dtdate.Rows.Clear(); 
     G1.DataBindings.Clear(); 
     if (cb_typescheID.Text == "Fix Date") 
     { 
      do 
      { 
       _dtdate.Rows.Add(startdate.Date, taskID, machine, note, period); 
       startdate = startdate.AddDays(addedDays); 
       G1.Refresh(); 
       //DateTime end = startdate; 
      } 
      while (startdate <= enddate); 
     } 
     G1.DataSource = _dtdate; 
     G1.Columns["Maintenance Date"].DefaultCellStyle.Format = "d"; 
} 

private void btn_save_Click(object sender, EventArgs e) 
{ 
if (cb_typescheID.Text == "Fix Date") 
       { 
        foreach (DataRow dr in _dtdate.Rows) 
        {       
         sqlstr = sqlstr + " INSERT INTO [PerformTask] (Year, Date, TasKID, MachineID, PerformStatus, ScheduleID, PeriodID) Values ('" + startdate.Year + "', '" + dr["Maintenance Date"].ToString() + "',";    
         sqlstr = sqlstr + "'" + texttaskID.Text.Trim() + "', '" + machine + "', 'RS_Open', '" + typeschedule + "', '" + period + "')"; 
         G1.Columns["Maintenance Date"].DefaultCellStyle.Format = "d"; 

        } 
       } 
} 

我想尽办法把它转换为仅日期(DD/MM/yyyy)但它仍然显示在DataGridView(G1)上,但是当我尝试将它保存到SQL中的数据表中时,无论我如何转换它,它的格式仍然是“dd/MM/yyyy hh:mm:ss tt”。我已经阅读了关于这个问题的旧主题,尝试了他们的方式,但仍然无法按照我想要的方式保存数据。

请帮忙。谢谢。

回答

1

您可以添加列的字符串:

_dtdate.Columns.Add(new DataColumn("Maintenance Date", typeof(String))); 

,然后添加一个新行时格式化日期:

_dtdate.Rows.Add(startdate.Date.ToString("dd/MM/yyyy"), taskID, machine, note, period); 
+0

谢谢,它工作,只是添加信息,而不是'startdate.Date.ToString(“dd/MM/yyyy”)',你可以使用'startdate.Date.ToShortDateString()'。 – Serenade

+0

不错。请标记为正确答案。再见 –

0

如果我理解正确的话,你的问题是不显示的日期在网格内的日期格式,但必须与SQL中的格式? 是你的数据库字段日期或日期时间(假设我们是MS SQL Server)?如果您不需要时间信息,则最好更改该字段。将日期存储为日期而不是字符串是非常值得推荐的,因为您可以将它们作为日期执行操作,而无需进行转换。一般来说,你不应该关心你的数据库格式值的方式;它取决于您的表示层来处理格式;你的数据库应该只关心数据的高效存储,而不用担心数据的外观。

+0

问题已解决:)无论如何,谢谢你 – Serenade