【发布时间】:2016-02-12 00:39:09
【问题描述】:
我是 C# 新手,并且使用 Windows 窗体。我将Datagridview 设置为只接受数字和一个小数点。
我将Datagridview 单元格值存储/更新到 sql 表中(货币列类型)。
我不想将小数点本身存储到 sql 表中,因为 sql 不会接受它并会抛出异常(因为只接受 double 值)
所以我写了这段代码来防止小数点自己存储到sql表中:
private void updateButton_Click(object sender, EventArgs e)
{
// connection string and the rest of sql stuff....
MyCommand.CommandText = "UPDATE Table1 SET ........");
MyCommand.Parameters.Add("@value1", SqlDbType.Money);
if (Convert.ToChar(dataGridView1.Rows[0].Cells[1].Value) != '.')// if not dot then store it in database
{
MyCommand.Parameters["@value1"].Value = Convert.ToDecimal(dataGridView1.Rows[0].Cells[1].Value);
}
}
但是,当我在Row0, column1 中单独输入小数点并单击更新按钮时,此代码不起作用并且仍然抛出异常(输入字符串的格式不正确)。
谁能告诉我为什么 if 条件不起作用?我怎样才能让它工作。谢谢
【问题讨论】:
-
抛出了什么样的异常?
-
@Nicholas Schuster。 “输入字符串的格式不正确”。有什么想法吗?
-
我怀疑 Convert.ToDecimal 在您向其传递一个无法转换为数字的字符串时抛出该异常。我怀疑 dataGridView1.Rows[0].Cells[1].Value 不包含您认为在单元格中输入一个单独的点时的值。
-
停止“if”行,调试到那里并将以下内容粘贴到 VS 的即时窗口中; ? Convert.ToChar(dataGridView1.Rows[0].Cells[1].Value)
-
如果上面的结果实际上是'.'那么我不知道,你的 if 应该抓住它。如果没有,只需调整您的 if 以查找正确的值。