现在的位置: 首页 > 综合 > 正文

GridView 多次合计

2017年10月25日 ⁄ 综合 ⁄ 共 1672字 ⁄ 字号 评论关闭

 今天有需求要用到多次合计,根据网上的稍微改了一下,我想应该有更好的可惜没搜到,如果大家看到有更好的可以给我路径,我也好学习一下,谢谢

现在正式开始看看,其实显示的大致效果如下:

前台其实很简单

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>    
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
    </div>
    </form>
</body>
</html>

后台只是绑定的时候做处理

            int iOrderNum = 0;//订单每次数量   
            int OrderTotalNum = 0;//订单总数量
            try
            {
                DataRow dataCurRow = null;//当前行   
                DataRow dataNewRow = null;//新增行   
                DataRow dataNextRow = null;//下一行   
                int rowCount = dt.Rows.Count;
                for (int i = 0; i < rowCount; i++)
                {
                    dataCurRow = dt.Rows[i];
                    if ((i + 1) <(rowCount+1 ))//如果是最后一行就不用比较了
                    {
                        if ((i + 1) == rowCount)
                        {                           
                            dataNewRow = dt.Rows[i];
                            iOrderNum += int.Parse(dt.Rows[i]["OrderNo"].ToString());
                            OrderTotalNum += int.Parse(dt.Rows[i]["OrderNo"].ToString());
                            dataNewRow = dt.NewRow();
                            dataNewRow["GroupNum"] = dataCurRow["GroupNum"];
                            dataNewRow["AgentId"] = "班组小计";
                            dataNewRow["OrderNo"] = iOrderNum;
                            dt.Rows.InsertAt(dataNewRow, i + 1);
                        }
                        else
                        {
                            dataNextRow = dt.Rows[i + 1];
                            iOrderNum += int.Parse(dt.Rows[i]["OrderNo"].ToString());
                            OrderTotalNum += int.Parse(dt.Rows[i]["OrderNo"].ToString());
                        }
                      
                    }
                    if (!dataCurRow["GroupNum"].Equals(dataNextRow["GroupNum"]))
                    {
                        if (dataCurRow["AgentId"].ToString() != "班组小计")//判断如果是小计则不用重复添加
                        {
                            dataNewRow = dt.NewRow();
                            dataNewRow["GroupNum"] = dataCurRow["GroupNum"];
                            dataNewRow["AgentId"] = "班组小计";
                            dataNewRow["OrderNo"] = iOrderNum;
                            rowCount += 1;
                            dt.Rows.InsertAt(dataNewRow, i + 1);
                        }
                        else
                            OrderTotalNum = OrderTotalNum - int.Parse(dt.Rows[i]["OrderNo"].ToString());//减去班组小计里面的重复数据
                        iOrderNum = 0;
                    }
                }
                //插入最后一行合计   
                dataNewRow = dt.NewRow();               
                dataNewRow["AgentId"] = "班组总计";
                dataNewRow["OrderNo"] = OrderTotalNum;
                dt.Rows.InsertAt(dataNewRow, dt.Rows.Count);
                rowCount = dt.Rows.Count;
                this.GridView1.DataSource = dt;//绑定数据库   
                this.GridView1.DataBind();
            }

显示的效果如上图。

 

抱歉!评论已关闭.