DataGridView试图将十进制解析为Int32

时间:2015-09-15 22:15:00

标签: .net datagridview

我有一个从数据库中填充的DataGridView。我有一个列Count在最初加载时是空白的,但我仍然将它绑定到查询中的NULL值。

如果我在Count列中输入数值,如果数字是整数,它将正常工作,但如果我尝试输入小数,则会收到以下错误:

  

System.FormatException:对于Int32,值太大或太小。 ---> System.OverflowException:对于Int32,值太大或太小。

     

at System.Number.ParseInt32(String s,NumberStyles style,NumberFormatInfo info)

-snip-堆栈其余部分跟踪-snip -

我尝试将DefaultCellStyle.Format设置为N2以及c,但仍然会收到错误。我不确定为什么它会尝试将数字解析为Int32,因为我没有在任何地方指定。我指定任何格式的唯一位置是DefaultCellStyle.Format属性。是否有其他地方我应该指定我想要允许十进制值,并将数字解析为十进制而不是整数?这个项目是在VB.NET中,但这似乎与.NET有关,所以如果需要,建议可以在C#或VB.NET中。

1 个答案:

答案 0 :(得分:0)

我在发布问题后不久就搞清楚了。我必须将我在数据库中填充的NULL值格式化为DECIMAL(9, 2),现在一切似乎都正常。例如:

SELECT CONVERT(DECIMAL(9, 2), NULL) AS [Count]
FROM MyTable

我以前所拥有的是:

SELECT NULL AS [Count]
FROM MyTable

我想也许只需在DataGridView中设置列格式就足够了,但出于某种原因,它希望默认为Int32 NULL值。