如何计算页面中5个GridView的总计并显示在Label中
解决5个GridView页脚总计求和并显示到Label的方案
嘿,这个需求不难搞定!我给你两种实用的实现方案,你可以根据自己的实际场景选择:
方案一:逐个获取GridView页脚值(直观易维护)
如果每个GridView的总计列位置固定,直接逐个读取页脚单元格的值是最直观的方式,代码示例如下:
protected void CalculateOverallTotal() { decimal overallTotal = 0m; // 处理第一个GridView if (GridView1.FooterRow != null) { // 假设总计在页脚的第3列(索引从0开始,记得根据你的页面调整!) if (decimal.TryParse(GridView1.FooterRow.Cells[2].Text, out decimal gv1Total)) { overallTotal += gv1Total; } } // 处理第二个GridView if (GridView2.FooterRow != null) { if (decimal.TryParse(GridView2.FooterRow.Cells[2].Text, out decimal gv2Total)) { overallTotal += gv2Total; } } // 依次处理剩下的三个GridView if (GridView3.FooterRow != null) { if (decimal.TryParse(GridView3.FooterRow.Cells[2].Text, out decimal gv3Total)) { overallTotal += gv3Total; } } if (GridView4.FooterRow != null) { if (decimal.TryParse(GridView4.FooterRow.Cells[2].Text, out decimal gv4Total)) { overallTotal += gv4Total; } } if (GridView5.FooterRow != null) { if (decimal.TryParse(GridView5.FooterRow.Cells[2].Text, out decimal gv5Total)) { overallTotal += gv5Total; } } // 把最终总和赋值给Label控件 lblGrandTotal.Text = $"所有表格总计:{overallTotal:C}"; // 这里用货币格式,可按需改成其他格式 }
方案二:批量遍历GridView(减少重复代码)
如果想让代码更简洁,或者后续可能增加更多GridView,可以把所有目标GridView放到集合里批量处理:
protected void CalculateOverallTotal() { decimal overallTotal = 0m; // 把需要计算的GridView都放进列表里 var targetGridViews = new List<GridView> { GridView1, GridView2, GridView3, GridView4, GridView5 }; foreach (var gv in targetGridViews) { if (gv.FooterRow != null) { // 若总计在最后一列,可用 gv.FooterRow.Cells.Count - 1 代替固定索引 if (decimal.TryParse(gv.FooterRow.Cells[2].Text, out decimal gvTotal)) { overallTotal += gvTotal; } } } lblGrandTotal.Text = $"所有表格总计:{overallTotal:N2}"; // 保留两位小数的数值格式 }
关键注意事项
- 确保每个GridView的
ShowFooter属性设置为true,否则FooterRow会是null,导致无法读取值 - 用
decimal.TryParse而不是直接强制转换,避免页脚文本不是数字时抛出异常 - 一定要根据你页面中总计列的实际位置调整
Cells的索引值,比如如果总计在最后一列,用gv.FooterRow.Cells.Count - 1会更灵活 - 记得在合适的时机调用这个方法,比如页面数据绑定完成后(比如
Page_Load事件里,或者每个GridView的DataBound事件之后)
内容的提问来源于stack exchange,提问作者Vikas
相关产品推荐
相关产品推荐

