代码改变世界

GridView页脚添加合计字段的两种方法

2013-02-14 10:12  neohdy  阅读(481)  评论(0编辑  收藏  举报

第一种:直接在aspx中实现

<asp:GridView ID="GridView1" ShowFooter="true" DataKeyNames="Id" AutoGenerateColumns="false"
    runat="server" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="Id" HeaderText=" Id" />
        <asp:BoundField DataField="Name" FooterText="合计" HeaderText="Name" />
        <asp:TemplateField HeaderText="Unit Price" FooterStyle-Font-Bold="True">
            <ItemTemplate>
                <%# GetUnitPrice(decimal.Parse(Eval("UnitPrice").ToString())).ToString("N2")  %>
            </ItemTemplate>
            <FooterTemplate>
                <%# GetTotal().ToString("N2") %>
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<script runat="server">
    decimal TotalUnitPrice;
    decimal GetUnitPrice(decimal Price)
    {
        TotalUnitPrice += Price;
        return Price;
    }
    decimal GetTotal()
    {
        return TotalUnitPrice;
    }
</script>

第二种方式:在cs文件中实现

int totalNumber, iNumber;
double totalMoney, iMoney;

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType   ==   DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.EmptyDataRow)   
          {
              DataRowView   drvBasicCountInfor   =   (DataRowView)e.Row.DataItem;   
              iNumber   =   Convert.ToInt32(drvBasicCountInfor[7]);   
              iMoney   =   Convert.Double(drvBasicCountInfor[8]); 
              //生成总计
              totalNumber += iNumber;
              totalMoney += iMoney; 
          }   
          if(e.Row.RowType   ==   DataControlRowType.Footer)  //页脚 
          {   
              e.Row.Cells[6].Text   =   "总计";
              e.Row.Cells[7].Text = string.Format("商品种类:{0}",totalNumber);
              e.Row.Cells[8].Text = string.Format("合计金额:{0}",totalMoney);   
          }
    }

需要设置GridView的ShowFooter=true .