GridView 多次合计

来源:互联网 发布:java案例精粹150例 编辑:程序博客网 时间:2024/05/16 05:32

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

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

前台其实很简单

<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();            }

显示的效果如上图。

 

原创粉丝点击