Solved

Gridview  - Footer

Posted on 2007-11-24
2
1,606 Views
Last Modified: 2009-10-13
I have a column call "Open Account". I want to display a total on a footer in Gridview. How can I accomplish this task - VB please.
0
Comment
Question by:VBdotnet2005
2 Comments
 
LVL 12

Expert Comment

by:craskin
ID: 20344581
if you make the open account column a templated column, you can create your own footer template with a label in it, then on the gridview_bound event, do something like

Sub myGridViewDataBound(...) Handles myGridView.DataBound
   Dim Total as Single = 0    
   For each row as GridViewRow in myGridView.Rows
         Total += row.Cells(the integer of Open Account cell).Text
   Next
   CType(myGridView.FindControl("myTotalLabel"), Label).Text = Total
End Sub
           
0
 
LVL 37

Accepted Solution

by:
samtran0331 earned 500 total points
ID: 20349768
If you declare Total in the rowdatabound, it will reset to zero every time a row binds...also, if you don't specify the rowtype, it will error on the header/footer rows.
Below uses Northwind and gets the numbers 2 different ways and displays them 2 different ways.
<%@ Page Language="VB" %>
 

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

<script runat="server">

    Private TotalUnitPrice As Decimal

    Private TotalQuantity As Integer

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)

        If e.Row.RowType = DataControlRowType.DataRow Then

            'Use dataitem to get data

            TotalUnitPrice += CType(e.Row.DataItem("UnitPrice"), Decimal)

            'use control to get data

            Dim lb As Label

            lb = CType(e.Row.Cells(3).FindControl("lbQuantity"), Label)

            TotalQuantity += CType(lb.Text, Integer)

        ElseIf e.Row.RowType = DataControlRowType.Footer Then

            'write total to the cell

            e.Row.Cells(2).Text = TotalUnitPrice.ToString

            'write total to the label

            CType(e.Row.Cells(3).FindControl("lbQuantityTotal"), Label).Text = TotalQuantity.ToString

        End If

    End Sub

</script>
 

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    <title>Gridview Footer Totals</title>

</head>

<body>

    <form id="form1" runat="server">

        <div>

            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="OrderID,ProductID"

                DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display."

                OnRowDataBound="GridView1_RowDataBound" ShowFooter="True">

                <Columns>

                    <asp:BoundField DataField="OrderID" HeaderText="OrderID" ReadOnly="True" SortExpression="OrderID" />

                    <asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" SortExpression="ProductID" />

                    <asp:BoundField DataField="UnitPrice" FooterStyle-HorizontalAlign="right" HeaderStyle-HorizontalAlign="right"

                        HeaderText="UnitPrice" ItemStyle-HorizontalAlign="right" SortExpression="UnitPrice" />

                    <asp:TemplateField FooterStyle-HorizontalAlign="right" HeaderStyle-HorizontalAlign="right"

                        HeaderText="Quantity" ItemStyle-HorizontalAlign="right" SortExpression="Quantity">

                        <ItemTemplate>

                            <asp:Label ID="lbQuantity" runat="server" Text='<%# Eval("Quantity") %>'></asp:Label>

                        </ItemTemplate>

                        <FooterTemplate>

                            <asp:Label ID="lbQuantityTotal" runat="server" Text=""></asp:Label>

                        </FooterTemplate>

                    </asp:TemplateField>

                </Columns>

            </asp:GridView>

            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"

                ProviderName="<%$ ConnectionStrings:NorthwindConnectionString.ProviderName %>"

                SelectCommand="SELECT TOP 15 [OrderID], [ProductID], [UnitPrice], [Quantity], [Discount] FROM [Order Details]">

            </asp:SqlDataSource>

        </div>

    </form>

</body>

</html>

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this Article, I will provide a few tips in problem and solution manner. Opening an ASPX page in Visual studio 2003 is very slow. To make it fast, please do follow below steps:   Open the Solution/Project. Right click the ASPX file to b…
A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now