Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 306
  • Last Modified:

Total on the Grid Footer

I am wondering why my total footer is always zero(0): this is my code;

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ARAging.aspx.cs" Inherits="tblCustomer_ARAging" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Double Thirty;
    Double Sixty;
    Double Ninety;
    Double OneTwenty;
    Double Over120;
   
    void detailsGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            try
            {
                // add the UnitPrice and QuantityTotal to the running total variables
                Thirty += Convert.ToDouble((DataBinder.Eval(e.Row.DataItem, "30 Days")).ToString());
                Sixty += Convert.ToDouble((DataBinder.Eval(e.Row.DataItem, "31-60")).ToString());
                Ninety += Convert.ToDouble(DataBinder.Eval(e.Row.DataItem, "61-90"));
                OneTwenty += Convert.ToDouble(DataBinder.Eval(e.Row.DataItem, "91-120"));
                Over120 += Convert.ToDouble(DataBinder.Eval(e.Row.DataItem, "Over 120"));
            }
            catch
            {
             //  
            }
           
        }
        else if (e.Row.RowType == DataControlRowType.Footer)
        {
            e.Row.Cells[0].Text = "Totals:";

            // for the Footer, display the running totals
            e.Row.Cells[1].Text = Thirty.ToString("n");
            e.Row.Cells[2].Text = Sixty.ToString("n");
            e.Row.Cells[3].Text = Ninety.ToString("n");
            e.Row.Cells[4].Text = OneTwenty.ToString("n");
            e.Row.Cells[5].Text = Over120.ToString("n");
           
            e.Row.Cells[1].HorizontalAlign = e.Row.Cells[2].HorizontalAlign = e.Row.Cells[3].HorizontalAlign = e.Row.Cells[4].HorizontalAlign = e.Row.Cells[5].HorizontalAlign = HorizontalAlign.Right;
            e.Row.Font.Bold = true;
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Aging Receivable</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White"
       
            BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="SqlDataSource1" GridLines="Horizontal" ShowFooter="True" OnRowDataBound="detailsGridView_RowDataBound">
           
            <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
            <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
            <Columns>
                <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" />
                <asp:BoundField DataField="30 Days" HeaderText="30 Days" SortExpression="30 Days" DataFormatString="{0:n}"/>
                <asp:BoundField DataField="31-60" HeaderText="31-60" SortExpression="31-60" DataFormatString="{0:n}"/>
                <asp:BoundField DataField="61-90" HeaderText="61-90" SortExpression="61-90" DataFormatString="{0:n}"/>
                <asp:BoundField DataField="91-120" HeaderText="91-120" SortExpression="91-120" DataFormatString="{0:n}"/>
                <asp:BoundField DataField="Over 120" HeaderText="Over 120" SortExpression="Over 120" DataFormatString="{0:n}"/>
            </Columns>
            <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
            <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
            <AlternatingRowStyle BackColor="#F7F7F7" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TradingConnectionString %>"
            SelectCommand="a_spARAging" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
   
    </div>
    </form>
</body>
</html>
 
0
JaimeJegonia
Asked:
JaimeJegonia
  • 5
  • 5
1 Solution
 
novynovCommented:
So, I wrote a little demo app to try what you were doing and it worked fine. The only real difference was that I didn't do any gridview styling - that shouldn't matter. At first I thought the problem might lie with the column names - they aren't valid C# identifier names...so might have caused the databinder to have problems. But, that wasn't it. I did it fine with identical column names.

Have you put a debugger on the rowdatabound handler? Are the totals at least getting accumulated? It would be good to know if the problem lies in the evaluation and storing of the value, or if it is just a  footer rendering problem. That would at least partition the troubleshooting space.

Let me know. I'll be glad to help more.
0
 
novynovCommented:
One other question: My demo assumed that your numeric colums were of SQL type float. Is this the case?
0
 
JaimeJegoniaAuthor Commented:
NovyNov,

It's just a footer rendering problem. The SQL type is decimal(14,2).

Thanks,


0
 [eBook] Windows Nano Server

Download this FREE eBook and learn all you need to get started with Windows Nano Server, including deployment options, remote management
and troubleshooting tips and tricks

 
novynovCommented:
Very strange: I changed my sql type to match yours, and basically copied your code into a new page verbatim - the only exception is that my db only has 3 of the numeric fields, not 5. All worked well.

When you breakpoint on the Footer row section, does the code get executed? Are the cell values assigned correctly at least in this call?
0
 
novynovCommented:
So, maybe a long shot, but given that I don't see the source for your code behind in your posting above, ARAging.aspx.cs, is it possible that something in there is blowing away the values?
0
 
JaimeJegoniaAuthor Commented:
Thanks. I think my problem is with the null value.
Please see my pivot result against grid total view.

 

Error.PNG
0
 
novynovCommented:
Ahhh...possibly, although you said that the totals were getting calculated correctly in the DataRow section of your event handler. Can you copy in your stored procedure. I'll try to reproduce the results and come up with a solution.
0
 
JaimeJegoniaAuthor Commented:
novynov:

I solved my issue by creating a small conversion function that catches "ArgumentNullException" and return to zero (0).

Anyways, thanks for helping me to come up with the solution and I'll still give you the points.

Jimi  
0
 
JaimeJegoniaAuthor Commented:
Thanks for the help & time.
0
 
JaimeJegoniaAuthor Commented:
There's no change in my SP but "ArgumentNullException" tweak in C# page.
Corrected.PNG
0

Featured Post

Nothing ever in the clear!

This technical paper will help you implement VMware’s VM encryption as well as implement Veeam encryption which together will achieve the nothing ever in the clear goal. If a bad guy steals VMs, backups or traffic they get nothing.

  • 5
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now