Hi jmontano,
Check this sample and take its reference.
HTML
<asp:GridView runat="server" ID="gvOrders" AutoGenerateColumns="false" OnPageIndexChanging="gvOrders_PageIndexChanging"
AllowPaging="true" PageSize="10" ShowFooter="true">
<Columns>
<asp:BoundField DataField="OrderID" HeaderText="Order ID" />
<asp:BoundField DataField="ProductName" HeaderText="Product Name" />
<asp:BoundField DataField="Price" HeaderText="Price" DataFormatString="{0:N2}" />
</Columns>
</asp:GridView>
Namespaces
C#
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
VB.Net
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindOrders();
}
}
private void BindOrders()
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString))
{
string query = "SELECT TOP 50 OrderID,";
query += "(SELECT ProductName FROM Products WHERE ProductID = [Order Details].ProductID) ProductName,";
query += "(UnitPrice * Quantity) Price ";
query += "FROM [Order Details] ";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter())
{
sda.SelectCommand = cmd;
DataTable dt = new DataTable();
sda.Fill(dt);
this.gvOrders.DataSource = dt;
this.gvOrders.DataBind();
decimal total = 0;
foreach (GridViewRow row in gvOrders.Rows)
{
decimal price = Convert.ToDecimal(row.Cells[2].Text);
total += price;
}
gvOrders.FooterRow.Cells[1].Text = "Total";
gvOrders.FooterRow.Cells[1].HorizontalAlign = HorizontalAlign.Right;
gvOrders.FooterRow.Cells[2].Text = total.ToString();
}
}
}
}
protected void gvOrders_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.gvOrders.PageIndex = e.NewPageIndex;
this.BindOrders();
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Me.BindOrders()
End If
End Sub
Private Sub BindOrders()
Using con As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("constr").ConnectionString)
Dim query As String = "SELECT TOP 50 OrderID,"
query += "(SELECT ProductName FROM Products WHERE ProductID = [Order Details].ProductID) ProductName,"
query += "(UnitPrice * Quantity) Price "
query += "FROM [Order Details] "
Using cmd As SqlCommand = New SqlCommand(query, con)
cmd.CommandType = CommandType.Text
Using sda As SqlDataAdapter = New SqlDataAdapter()
sda.SelectCommand = cmd
Dim dt As DataTable = New DataTable()
sda.Fill(dt)
Me.gvOrders.DataSource = dt
Me.gvOrders.DataBind()
Dim total As Decimal = 0
For Each row As GridViewRow In gvOrders.Rows
Dim price As Decimal = Convert.ToDecimal(row.Cells(2).Text)
total += price
Next
gvOrders.FooterRow.Cells(1).Text = "Total"
gvOrders.FooterRow.Cells(1).HorizontalAlign = HorizontalAlign.Right
gvOrders.FooterRow.Cells(2).Text = total.ToString()
End Using
End Using
End Using
End Sub
Protected Sub gvOrders_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
Me.gvOrders.PageIndex = e.NewPageIndex
Me.BindOrders()
End Sub
Screenshot
