问题描述
asp.net中gridview是分页的,现在需要对gridview的某一列的所有的数据进行相加,比如第9列数据是金额,以小数显示的,相加之后的结果要显示在最后的翻页中的最后一行,代码应该怎么写?protectedvoidGridView1_RowDataBound1(objectsender,GridViewRowEventArgse){GridView1.ShowFooter=true;for(inti=0;i<GridView1.Rows.Count;i++){sum+=Convert.ToDecimal(GridView1.Rows[i].Cells[9].Text.ToString());}if(e.Row.RowType==DataControlRowType.Footer){e.Row.Cells[1].Text="合计";e.Row.Cells[9].Text=sum.ToString();}}
我这样的代码写出来的是gridview的每一页的最后一行都会出现一个合计,而且合计的结果还不对,应该怎么改呢?
解决方案
解决方案二:
引用楼主tyfandkhr的回复:
for(inti=0;i<GridView1.Rows.Count;i++){sum+=Convert.ToDecimal(GridView1.Rows[i].Cells[9].Text.ToString());}
在RowDataBound事件里面,统计每行的值,怎么可能成功呢,一边绑,然后,你还要计算总计?!在指定GridView的DataSource,执行绑定方法的下方,遍历绑定的DataTable,然后,得到统计值,在操作GridView的Foot列,显示统计值。
解决方案三:
引用1楼lisliefor的回复:
引用楼主tyfandkhr的回复:for(inti=0;i<GridView1.Rows.Count;i++){sum+=Convert.ToDecimal(GridView1.Rows[i].Cells[9].Text.ToString());}在RowDataBound事件里面,统计每行的值,怎么可能成功呢,一边绑,然后,你还要计……
执行绑定方法的下方,遍历绑定的DataTable?什么意思?能说清楚具体代码怎么写吗?
解决方案四:
这是我刚刚发现的网页
解决方案五:
//查询数据,获得DataTabledtGridView1.DataSource=dt;GridView1.DataBind();decimalsum=0;foreach(DataRowrowindt.Rows){sum+=Convert.ToDecimal(row["Price"]==null?"0":row["Price"].ToString());}GridView1.FooterRow.Cells[1].Text="合计";GridView1.FooterRow.Cells[9].Text=Decimal.Round(sum,2)+"";//保留两位小数
解决方案六:
引用4楼lisliefor的回复:
C#code//查询数据,获得DataTabledtGridView1.DataSource=dt;GridView1.DataBind();decimalsum=0;foreach(DataRowrowindt.Rows){sum+=Convert.ToDecimal……
这个应该写在什么方法里呢?
解决方案七:
解决方案八:
现在已经能求出来每页的某列的所有值的总和,但是显示的时候每页下面都会显示,如果我想只在最后一页的最下面显示,应该怎么做呢?
解决方案九:
操作datatable吧DataTabledt=Lansoft.GetDt(strDateS,strDateE);DataRowdr=dt.NewRow();//建立dt对象的新行dr[0]="合计:";//新行的第一个单元格内容是合计for(inti=1;i<dt.Columns.Count;i++){//循环列floatsum=0;for(intj=0;j<dt.Rows.Count;j++){//循环行sum+=float.Parse(dt.Rows[j][i].ToString());}dr[i]=sum;//加入结果}dt.Rows.Add(dr);//新行添加到dt里
解决方案十:
别用gridview,太难用了,用datalist呵呵