下面的程序是我把gridview某一列的值相加的程序,但是相加的结果总是少最后一行的列值加不上,请高手看看程序是否有误?谢谢
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        
        int num =0;  //个数
        Decimal sum=0; //价格
        if (e.Row.RowType == DataControlRowType.DataRow)// 当时底部时
        {            for (int i = 0; i < this.GridView1.Rows.Count; i++) //循环gridview的行
            {
               // num += Convert.ToInt32(GridView1.Rows[i].Cells[4].Text); //把个数相加
                sum += Convert.ToDecimal(GridView1.Rows[i].Cells[5].Text); //把价格相加            }
            //Response.Write(sum);
            Label3.Text = "工资总和" + sum.ToString();         }    }

解决方案 »

  1.   

    把数据源(如DataTable)的数据相加。
      

  2.   

    select col1+col2 from table1
      

  3.   

    自己跟一下呀 看看最后一行有没有进去运算  你的最后一行是DataRow吗??
      

  4.   

    现在知道如何把一页的列值相加了,但是如果gridview是多页的时候该如何解决呢?
      

  5.   

    别加gridview 上的  在数据库里或datatable里 直接处理 然后在绑定
      

  6.   

    直接对datatable的那一列进行加法运算
      

  7.   


    你要算的值到底是当前页的和还是所有数据的和?你最好是遍历你的DataTable,把里边的值加出来.
      

  8.   

    直接对datatable的那一列进行加法运算
      

  9.   

    private decimal sum = 0m;的情况下if (e.Row.RowType == DataControlRowType.DataRow)// 当时底部时 

       sum += Convert.ToDecimal(e.Row.Cells[5].Text); //把价格相加 } 
    即可。最后在GridView_DataBound事件里(注意:不是RowDataBound)
    Label3.Text = "工资总和" + sum.ToString();            
      

  10.   


    正解,应该在GridView_DataBound中做事件
      

  11.   

    如果你是计算当前gridview的数据相加还是整个读取数据库的数据相加,如果是当前GridView的话你的代码好像没有什么问题。
      

  12.   

    不要用if (e.Row.RowType == DataControlRowType.DataRow)// 当时底部时 这个判断啊。你用这个判断,当是底部的时候就跳出了。最后一行不会加的。
    用foreach(GridViewRow row in GridView1.Rows)
    {
        sum += int.Parse(row.Cells[5].text);
    }这样得出的应该就是你需要的答案
      

  13.   

    这个例子根本没有必要在RowDataBound事件中做判断,你需要的时候foreach一下每行就行了Decimal sum = 0;
    foreach(GridViewRow row in GridView1.Rows)
    {
        sum += Convert.ToDecimal(row.Cells[5].Text); 
    }
      

  14.   

    看了高歌的答复.你要把你工资转化的类型改变啊..我上面方便写了int型.你那里不一定是int型啊..这个应该不会出错的.
      

  15.   


    建议在数据源中处理
    如数据源为DataTable可用dt.Compute()来计算,大概写法如下 dt.Compute("Sum(列名)")