GridView Control in ASP.NET - Part 10


Introduction & Demonstration

Imagine that we want to display a column total at the bottom of a column. In that case, we can handle the GridView RowDataBoundevent to sum the values in a column and display the summary in the column footer. For example, in the page given below contains aGridView control that displays a summary column representing the total marks obtained by all students.




<%@ 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 TotalMarks As Decimal = 0

    Protected Sub TotalMarks_RowDataBound(ByVal sender As ObjectByVal e As GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim Totals As Decimal = CType(DataBinder.Eval(e.Row.DataItem, "TOTAL_MARKS"), Decimal)
            TotalMarks += Totals
        End If
        If e.Row.RowType = DataControlRowType.Footer Then
            Dim lblTotalMarks As Label = CType(e.Row.FindControl("lblTotal"), Label)
            lblTotalMarks.Text = String.Format("Total=" & TotalMarks)
        End If
    End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <style type="text/css">
   
    </style>
</head>
<body>
    <form id="form1" runat="server" >

    <asp:GridView
        id="GridView1"
        DataSourceID="SqlDataSource1"
        OnRowDataBound="TotalMarks_RowDataBound"
        AutoGenerateColumns="false"
        ShowFooter="true"
        Runat="server" Width="287px">
        <Columns>
        <asp:BoundField
            DataField="ID"
            HeaderText="ID" />
        <asp:BoundField
            DataField="NAME"
            HeaderText="NAME" />
        <asp:TemplateField HeaderText="Total_Marks">
        <ItemTemplate>
            <%# Eval("TOTAL_MARKS")%>
        </ItemTemplate>
        <FooterTemplate>
            <asp:Label
                id="lblTotal"
                Runat="server" Font-Bold="true" BackColor="Brown"/>
        </FooterTemplate>
        </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
        ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
        ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>"
        SelectCommand="SELECT [ID], [NAME], [TOTAL_MARKS] FROM [MARKSHEET]">
    </asp:SqlDataSource>
    </form>
</body>
</html>


Notice that the GridView control uses a TemplateField to represent the MARKS_TOTAL column. The TemplateField includes a<FooterTemplate> that contains a Label control. The TotalMarks_RowDataBound() method displays the total of the marks in this Label control.

Note: Continue in Next Part. 

Comments

Popular posts from this blog

Migrating database from ASP.NET Identity to ASP.NET Core Identity

Customize User's Profile in ASP.NET Identity System