asp.net gridview列的总和和数量

时间:2018-08-05 07:06:20

标签: c# asp.net gridview multiple-columns rows

我对汇总列的总值有一个小问题。我有一个购物车,我要在其中总结商品的数量和价格。我已经完成了价格汇总,但是当我尝试将其乘以数量时,它没有用。

。  你能给我个建议吗?

这是表格视图:

<asp:GridView ID="GridView1" runat="server" HorizontalAlign="Center" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Horizontal" DataKeyNames="id"  ShowFooter="true" ShowHeaderWhenEmpty="true">
    <Columns>
        <asp:BoundField DataField="item" HeaderText="Item" SortExpression="item"></asp:BoundField>
        <asp:BoundField DataField="BEE" HeaderText="Description" SortExpression="BEE"></asp:BoundField>
        <asp:BoundField DataField="count" HeaderText="Quantity" SortExpression="count"></asp:BoundField>
        <asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price"></asp:BoundField>
        <asp:TemplateField>
            <FooterTemplate>
                <asp:Label ID="lbltxtTotal" runat="server" Text="Total Price" />
            </FooterTemplate>
            <FooterTemplate>
                <asp:Label ID="lblTotal" runat="server" />
             </FooterTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="id" HeaderText="id" SortExpression="id"></asp:BoundField>
        <asp:ButtonField CommandName="Delete" Text="Delete" ButtonType="Button" ShowHeader="True" HeaderText="Delete"></asp:ButtonField>

    </Columns>
    <EmptyDataTemplate>No Record Available</EmptyDataTemplate>
    <FooterStyle BackColor="White" Font-Bold="True"></FooterStyle>
    <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White"></HeaderStyle>

    <PagerStyle HorizontalAlign="Right" BackColor="White" ForeColor="Black"></PagerStyle>

    <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White"></SelectedRowStyle>

    <SortedAscendingCellStyle BackColor="#F7F7F7"></SortedAscendingCellStyle>

    <SortedAscendingHeaderStyle BackColor="#4B4B4B"></SortedAscendingHeaderStyle>

    <SortedDescendingCellStyle BackColor="#E5E5E5"></SortedDescendingCellStyle>

    <SortedDescendingHeaderStyle BackColor="#242121"></SortedDescendingHeaderStyle>
</asp:GridView>

这是一个后端:

protected void Timer1_Tick(object sender, EventArgs e)
    {
        string Username = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
        string Username_new = Username.Replace("APAC\\", "");
        GridView1.DataBind();
        //live data
        String myquery = "Select * from Basket where Username='" + Username_new + "'";
        DataTable dt = new DataTable();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = myquery;
        cmd.Connection = con;
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;

        da.Fill(dt);
        GridView1.FooterRow.Cells[1].Text = "Total Amount";
        GridView1.FooterRow.Cells[2].Text = dt.Compute("Sum(price)", "").ToString();
    }

1 个答案:

答案 0 :(得分:1)

这很容易。 将方法添加到您的代码中:

  protected void getSUM()
{
// SQL query that gets total of product sales where category id = 1
string SqlQuery = @"SELECT SUM(ProductSales) AS TotalSales 
  FROM [NORTHWIND].[dbo].[Sales by Category] 
  WHERE CategoryID = 1";

// Declare and open a connection to database
SqlConnection conn = new SqlConnection(
ConfigurationManager.ConnectionStrings["NorthwindConnStr"].ConnectionString);
conn.Open();

// Creates SqlCommand object
SqlCommand comm = new SqlCommand(SqlQuery, conn);

// Gets total sales
decimal TotalSales = Convert.ToDecimal(comm.ExecuteScalar());

// Close connection
conn.Close();
conn.Dispose();
comm.Dispose();

// Adds formatted output to GridView footer
GridView1.Columns[1].FooterText = String.Format("{0:c}", TotalSales);
}

在标记代码中,我们将定义页脚模板并调用getSUM方法:

  <FooterTemplate>
  Total sales:   <%# getSUM(); %>
  </FooterTemplate>