我有一个从数据库中填充的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中。
答案 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
值。