Winforms 接受字符串值的双精度类型的DataColumn
我感到惊讶的是,在数据绑定到Winforms 接受字符串值的双精度类型的DataColumn,winforms,datatable,decimal,datacolumn,Winforms,Datatable,Decimal,Datacolumn,我感到惊讶的是,在数据绑定到数据表的DataGridView上,强制显示带2位小数的十进制值的问题的解决方案是: DataRow newRow = this.MenuDataTable.NewRow(); newRow["Price"] = menuItem.Price.ToString("0.00"); 而Price列本身被设置为Decimal类型(并且在解决方案中插入的对象是字符串)。就在那时,我注意到对象DataRow接受任何object类型,这显然是我最初没有想到的原因 我现在
数据表的DataGridView
上,强制显示带2位小数的十进制值的问题的解决方案是:
DataRow newRow = this.MenuDataTable.NewRow();
newRow["Price"] = menuItem.Price.ToString("0.00");
而Price
列本身被设置为Decimal
类型(并且在解决方案中插入的对象是字符串
)。就在那时,我注意到对象DataRow
接受任何object
类型,这显然是我最初没有想到的原因
我现在的困境是“这样做真的安全吗?”。实际上,在将数据插入DataTable
之前,我首先验证了数据,如下所示:
if (!decimal.TryParse(this.Price, out outDecimal))
{
throw new InvalidUserValuesException("Price must be a number");
}
if (outDecimal < 0)
{
throw new InvalidUserValuesException("Price must be a positive number");
}
if (Decimal.Round(outDecimal, 2) != outDecimal)
{
throw new InvalidUserValuesException("Price must only have two decimal places");
}
if (this.Price.Length > 10)
{
throw new InvalidUserValuesException("Price must not exceed 10 characters");
}
if(!decimal.TryParse(this.Price,out out-decimal))
{
抛出新的InvalidUserValuesException(“价格必须是数字”);
}
如果(输出小数<0)
{
抛出新的InvalidUserValuesException(“价格必须是正数”);
}
if(十进制四舍五入(outDecimal,2)!=outDecimal)
{
抛出新的InvalidUserValuesException(“价格必须只有两位小数”);
}
如果(this.Price.Length>10)
{
抛出新的InvalidUserValuesException(“价格不得超过10个字符”);
}
我相信答案是简单明了的,我只是想让自己不再担心我的应用程序将来会崩溃。“我很惊讶我的问题解决方案是强制在数据表上显示两位小数…”你在说什么问题?没有“在数据表中显示”这样的事情。显示是表示术语,与数据无关。你说得对。我的解释中确实遗漏了一些要点。我已经编辑了这个问题。谢谢