我试图找到gridview中列的所有单元格的总和。但是我收到了错误:
我正在尝试计算整个列并将其放在gridview之外的标签中。
Row.Cells [4]的输出是459.00
输入字符串的格式不正确。
在线:第509行:sum + = Decimal.Parse(c.Text);
这是我的代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.DataItem != null)
{
// Set the capacity label text
Label4.Text = e.Row.Cells[4].Text;
// Calc the sum of all of the row values
decimal sum = 0;
foreach (TableCell c in e.Row.Cells)
{
sum += Decimal.Parse(c.Text);
}
// Set the sum label text value
Label5.Text = sum.ToString();
}
}
答案 0 :(得分:0)
使总和成为全局变量。
decimal sum = 0;
然后为每一行添加全局变量:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && e.Row.DataItem != null)
{
// Set the capacity label text
sum += Decimal.Parse(e.Row.Cells[4].Text);
}
}
然后在page_prerender中输入以下内容:
// Set the sum label text value
Label5.Text = sum.ToString();
答案 1 :(得分:0)
您还可能想要检查Row.ItemType是一个项目,而不是标题。此外,它更安全:
decimal val;
foreach (..)
{
//only call Trim() if you know the text is not null.
If (Not Decimal.TryParse(c.Text.Trim()), out val) {
//error condition; you can throw an exception just for testing to verify something is or isn't right
throw new Exception("Error, field is not a decimal: " + c.Text);
}
else {
sum += val;
}
此外,任何总计也必须在ItemDataBound事件之外完成。因此,将总数设置为标签并非正确的时间。