2014-03-02 54 views
0

我在小型C#項目中遇到了一些問題。在我的數據庫,我有3列:比較日期時在datagridview中更改顏色行

ID(int), NameProducts(nvarchar), DeadLine(nvarchar) 

爲什麼我設置了時限字段爲nvarchar究其原因,是因爲在我的形式我做了一個DateTimePicker,其中設置該屬性這種控制。

格式:自定義和自定義格式:dd-MM-yyyy。

但是,當我插入或更新記錄時,我總是得到以下消息:無法轉換。

如何在比較截止日期和當前時間的同時更改datagridview中行的顏色。

if (time now < deadline about 3 days) // change color to Yellow 
if (time now < deadline about 1 days) // change color to orange 
if (time now => deadline) // change color to RED. 
+0

什麼是你的'deadline'究竟價值?這是一串我想,對吧?你想用'dd-MM-yyyy'格式解析它嗎? –

+0

我設置類型string.because當我從datagridview選擇數據textbox.it'll顯示dd-MM-yyyy.if我設置字段截止日期:「datetime」然後數據庫將顯示yyyy-dd-mm.And如果插入,更新,選擇將顯示錯誤。所以我想問:如何可以比較截止日期(字符串)和時間(日期時間)之間的日期.thks – user3370990

+1

爲了存儲'截止日期',你應該真的在數據庫中使用日期時間類型你沒有提到你正在使用哪個數據庫)。您可以通過獲取DateTimePicker1.Value()來獲取datetimepicker的值作爲DateTime,而不考慮其顯示格式。有關更改DataGridView中行的顏色,請參閱[C#如何更改datagridview中的行顏色?](http://stackoverflow.com/questions/2189376/c-sharp-how-to-change-row-color-在-的datagridview)。 –

回答

0

你爲什麼不使用開關的情況下: 這樣

if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      int quantity = int.Parse(((Label)e.Row.FindControl("lblId")).Text); 

      switch (quantity) 
      { 
       case 1: 
        e.Row.Cells[2].BackColor = System.Drawing.ColorTranslator.FromHtml("#FF0000"); 

        break; 
       case 2: 
        e.Row.Cells[2].BackColor = System.Drawing.ColorTranslator.FromHtml("#00FFFF"); 
        break; 
       case 3: 
        e.Row.Cells[2].BackColor = System.Drawing.ColorTranslator.FromHtml("#0000FF"); 
        break; 
       case 4: 
        e.Row.Cells[2].BackColor = System.Drawing.ColorTranslator.FromHtml("#FFA500"); 
        break; 
       case 5: 
        e.Row.Cells[2].BackColor = System.Drawing.ColorTranslator.FromHtml("#FFFF00"); 
        break;    

      } 
     } 
+0

我想你使用事件:datagridview_Rowdatabound.correct?我使用winform.must我使用什麼事件? – user3370990

+0

是的, 好吧,讓我檢查窗口窗體 –