2017-05-29 6 views
1

Ich weiß, das ist ein altes Problem, aber ich kann nicht herausfinden, warum.Format DateTime in DataGridView

Ich habe 2 Hohlräume Bindung in 2 Tasten GENE und SAVE-:

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"; 
} 

und

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"; 

        } 
       } 
} 

versuchte ich jeden Weg, um es nur Datum zu konvertieren (TT/MM/yyyy) aber es wird immer noch auf einem DataGridView (G1) angezeigt, aber wenn ich versuche, es in meine Datentabelle in SQL zu speichern, ist sein Format immer noch "TT/MM/JJJJ hh: mm: ss tt" egal wie ich es umwandle. Ich habe zu einem alten Thema über dieses Problem gelesen, habe versucht, ihre Möglichkeiten, aber immer noch nicht die Daten so speichern, wie ich will.

Bitte helfen. Vielen Dank.

Antwort

1

Sie die Spalte als String könnte hinzufügen:

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

und formatieren Sie das Datum, wenn eine neue Zeile hinzugefügt:

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

danke, es funktionierte, nur Zusatzinfo, anstelle von 'startdate.Date.ToString (" TT/MM/JJJJ ")', könnten Sie 'startdate.Date.ToShortDateString()' verwenden. – Serenade

+0

Schön. Bitte als richtige Antwort markieren. Tschüss –

0

Wenn ich Sie richtig verstehe, Ihr Problem Anzeige ist nicht das Datum im Datumsformat im Grid, hat aber mit dem Format in SQL zu tun? Ist Ihr Datenbankfeld Datum oder Datetime (vorausgesetzt, wir sind MS SQL Server)? Wenn Sie die Zeitinformationen nicht benötigen, ist es viel besser, das Feld auf das Datum zu ändern. Es ist viel vorzuziehen, Datumsangaben als Datumsangaben und nicht als Zeichenfolgen zu speichern, da Sie sie als Datumsangaben ausführen können, ohne sie zu übertragen. Im Allgemeinen sollten Sie sich nicht darum kümmern, wie Ihre Datenbank Werte formatiert. Es liegt an Ihrer Präsentationsebene, die Formatierung zu verarbeiten. Ihre Datenbank sollte sich nur mit der effizienten Speicherung von Daten beschäftigen und sich nicht darum kümmern, wie diese Daten aussehen.

+0

das Problem war gelöst :) danke trotzdem – Serenade