[英]Sum of column values in C#
我使用以下这些代码来计算数据库中特定行的总和,并将其显示在该意图列下的新行中。 但是我会遇到一个错误。
你调用的对象是空的
请帮我解决这个问题。
提前致谢。
int sum = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}
DataSet ds = new DataSet();
adapter.Fill(ds);
DataRow row = ds.Tables["Entry"].NewRow();
ds.Tables["Entry"].Rows.Add(row);
我想知道如何在新行中看到总和。
我认为错误是在循环语句中:
代替:
for (int i = 0; i < dt.Rows.Count; i++)
{
sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}
用这个:
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}
您从Index zero
开始,因此应该为总行数减去一 。 当到达时,它将返回Object reference not set to an instance of an object
:
sum += int.Parse(dataGridView1.Rows[dt.Rows.Count].Cells["Fee"].Value.ToString());
因为这样的行不存在。
更新1
在循环之后,插入以下语句:
dataGridView1.Rows.Add("", "", sum)
更新2
int sum = 0;
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
sum += int.Parse(dataGridView1.Rows[i].Cells["Fee"].Value.ToString());
}
DataSet ds = new DataSet();
adapter.Fill(ds);
DataRow row = ds.Tables["Entry"].NewRow();
row[0] = "";
row[1] = "";
row[2] = sum;
ds.Tables["Entry"].Rows.Add(row);
“ ds”没有表“ Entry”,这就是为什么您收到“未将对象引用设置为对象实例”的原因。
虽然您的问题不是很清楚,但是请从数据表或网格中检查循环访问值
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Fee"].Value !=null)
sum += int.Parse(dt.Rows[i]["Fee"].Value.ToString());
}
还要确保dt.Rows [i] [“ Fee”]不包含空值。即使您可以使用Compute方法进行总和。
您可以在数据表中使用计算方法。 从计算方法中获取结果,然后从数据表中创建新行,然后分配给适当的字段。 然后将新行添加到数据表中。
我建议您使用调试器,看看确切的错误发生在哪里:)
如果数据库为一个“ FEE”单元返回空值,也会发生这种情况。 运行它,看看您确切在哪里,并查看值,如果看到null,则当!= null时将需要它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.