int sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
}
label1.Text = sum.ToString();
上面是要计算的代码。 当我运行该应用程序时,它不会显示任何错误。从MySql加载datagridview并按导致上述功能的按钮后,它将显示错误。
System.FormatException:'输入字符串的格式不正确。'
sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
Here is an example of the datagridview
如果我将Cells [2]更改为Cells [0],效果很好
我仍然是C#初学者,但我想它无法将“获得”列中的数据转换为整数?
答案 0 :(得分:1)
考虑到屏幕截图,Cells[2]
不是int
,而是Decimal
和总和应声明为这种类型。
Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
sum += Decimal.Parse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString());
}
如果由于某些原因该值为空或错误,则可以使用TryParse来检查转换是否成功:
Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal temp;
if (Decimal.TryParse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString(), out temp))
sum += temp;
}
label1.Text = sum.ToString();
注意:(dataGridView1.Rows[i].Cells[2].Value ?? "")
将对dataGridView1.Rows[i].Cells[2].Value
执行检查。如果为空,将使用值""
代替null
。 null.ToString()
将引发异常。
答案 1 :(得分:0)
您应该检查该字段是否具有数字值,然后将其转换为int。
float sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
float temp = 0;
float.TryParse(dataGridView1.Rows[i].Cells[2].Value?.ToString(), out temp);
sum += temp;
}
label1.Text = sum.ToString();
答案 2 :(得分:0)
尝试这个
Decimal sumcol = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal val;
string colval = dataGridView1.Rows[i].Cells[2].Value.ToString();
if(colval != null){
if (Decimal.TryParse(colval, out val))
sum += val;
}
label1.Text = sum.ToString();}