2014-11-06 83 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”

相关问题