2017-05-29 15 views
1

これは古い問題ですが、理由を理解できません。DataGridViewの書式DateTime

私はSAVEとを生成2つのボタンで結合2つのボイド持っている:私は唯一の日付(DD/MM /に変換するためにあらゆる方法を試してみました

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

        } 
       } 
} 

を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