2014-11-06 57 views
0

在GridView的空值我在我的數據庫中的表,其通過:如何接受來自C#

  • RewardAmountID
  • START_DATE
  • END_DATE
  • REWARD_AMOUNT

回到我的代碼背後。 End_Date可以爲空,但由於某種原因,當我運行我的代碼時出現錯誤。

Cannot set Column 'END_DATE' to be null. Please use DBNull instead. 

這是我的C#代碼。

Amounts = ser.GetRewardAmounts().ToList(); 

    dt.Columns.Add(new DataColumn("REWARD_AMOUNT_ID", typeof(int))); 
    dt.Columns.Add(new DataColumn("START_DATE", typeof(DateTime))); 
    dt.Columns.Add(new DataColumn("END_DATE", typeof(DateTime))); 
    dt.Columns.Add(new DataColumn("REWARD_AMOUNT", typeof(decimal))); 

    foreach (var item in Amounts) 
    { 
     dr = dt.NewRow(); 

     dr[0] = item.REWARD_AMOUNT_ID; 
     dr[1] = item.START_DATE; 
     dr[2] = item.END_DATE; 
     dr[3] = item.REWARD_AMOUNT; 

     dt.Rows.Add(dr); 
    } 

    DataView dv = new DataView(dt); 

    dg_amounts.DataSource = dv; 
    dg_amounts.DataBind(); 

如果任何人有任何關於此問題的信息,你的幫助將是巨大的!

+0

什麼是DCRA的foreach?似乎應該是項目? – 2014-11-06 12:09:14

+0

@IsThatSo你是對的我只是意識到,非常感謝! – 2014-11-06 12:10:19

+0

其實這與asp.net和網格視圖無關,但與ADO.NET。我已經修復了相應的標籤。 – Patko 2014-11-06 12:23:05

回答

2

實際上,您需要的所有信息都已經出現在例外消息中 - 您顯然正在嘗試將null的值設置爲DataColumn。問題是DataColumn不使用空值,但是DBNull。所以你可以這樣做:

dr[2] = DCRA.END_DATE ?? DBNull.Value; 
+0

感謝您的幫助!我知道我必須讓它在某處空。我嘗試添加AllowNulls到我的GridView,它沒有工作。感謝你的回答。 – 2014-11-06 12:11:06

+0

有沒有辦法說如果它的Null不顯示該單元格的數據網格中的任何東西? – 2014-11-06 12:17:01

+0

檢查這個答案http://stackoverflow.com/questions/15218714/how-to-show-empty-data-row-in-gridview-control在DataGrid中顯示null。 – Patko 2014-11-06 12:54:32

0

請使用此屬性來處理網格中的空值。

Property:nulldisplaytext =「xxx」

相關問題