Suppose you have a one numeric type columnn in your data table and you want to add all column values.Also display sum of column in footerRow of the GridView.
If we think about algorithm for this type of problem. Algorithm say that first we take a Gridview with Two template field , One template field have one item template and one footer template such as
Another template field have same field which is take above such as
This whole part cover designing
In codebehind model first we would bind GridView on page Load method. After that handle RowDataBound event . In RowDataBound event first check Row type is DataRow.
After that find income label in Gridview using findcontrol method.
Here Total is a integer variable.
Now Show Total income to footer label then you must find control from the footer row on Page_Load method
After founded , Total value assign to footer label
Run you program.
Complete code
OutputIf we think about algorithm for this type of problem. Algorithm say that first we take a Gridview with Two template field , One template field have one item template and one footer template such as
<asp:TemplateField HeaderText ="Name">
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text='<%# Eval("namet") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate >
Total:
</FooterTemplate>
</asp:TemplateField>
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text='<%# Eval("namet") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate >
Total:
</FooterTemplate>
</asp:TemplateField>
Another template field have same field which is take above such as
<asp:TemplateField HeaderText ="Income">
<ItemTemplate>
<asp:Label ID="incomelbl" runat="server" Text='<%# Eval("Income") %>' />
</ItemTemplate>
<FooterTemplate >
<asp:Label ID="footerlbl" runat="server" Text="" />
</FooterTemplate>
</asp:TemplateField>
<ItemTemplate>
<asp:Label ID="incomelbl" runat="server" Text='<%# Eval("Income") %>' />
</ItemTemplate>
<FooterTemplate >
<asp:Label ID="footerlbl" runat="server" Text="" />
</FooterTemplate>
</asp:TemplateField>
This whole part cover designing
In codebehind model first we would bind GridView on page Load method. After that handle RowDataBound event . In RowDataBound event first check Row type is DataRow.
After that find income label in Gridview using findcontrol method.
if (e.Row.RowType ==DataControlRowType .DataRow)
{
var incomsal = e.Row.FindControl("incomelbl") as Label;
if (incomsal != null)
{
total += int.Parse(incomsal.Text);
}
}
{
var incomsal = e.Row.FindControl("incomelbl") as Label;
if (incomsal != null)
{
total += int.Parse(incomsal.Text);
}
}
Here Total is a integer variable.
Now Show Total income to footer label then you must find control from the footer row on Page_Load method
protected void Page_Load(object sender, EventArgs e)
{
if (!Page .IsPostBack)
{
binddata();
var footlbl = GridView1.FooterRow.FindControl("footerlbl") as Label;
if (footlbl != null)
{
footlbl.Text = total.ToString();
}
}
}
{
if (!Page .IsPostBack)
{
binddata();
var footlbl = GridView1.FooterRow.FindControl("footerlbl") as Label;
if (footlbl != null)
{
footlbl.Text = total.ToString();
}
}
}
After founded , Total value assign to footer label
Run you program.
Complete code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="additem.aspx.cs" Inherits="additem" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" ShowFooter ="true" AutoGenerateColumns ="false" OnRowDataBound="GridView1_RowDataBound">
<Columns >
<asp:TemplateField HeaderText ="Name">
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text='<%# Eval("namet") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate >
Total:
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Income">
<ItemTemplate>
<asp:Label ID="incomelbl" runat="server" Text='<%# Eval("Income") %>' />
</ItemTemplate>
<FooterTemplate >
<asp:Label ID="footerlbl" runat="server" Text="" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="result" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
Codebehind <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" ShowFooter ="true" AutoGenerateColumns ="false" OnRowDataBound="GridView1_RowDataBound">
<Columns >
<asp:TemplateField HeaderText ="Name">
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text='<%# Eval("namet") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate >
Total:
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Income">
<ItemTemplate>
<asp:Label ID="incomelbl" runat="server" Text='<%# Eval("Income") %>' />
</ItemTemplate>
<FooterTemplate >
<asp:Label ID="footerlbl" runat="server" Text="" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="result" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class additem : System.Web.UI.Page
{
int total = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page .IsPostBack)
{
binddata();
var footlbl = GridView1.FooterRow.FindControl("footerlbl") as Label;
if (footlbl != null)
{
footlbl.Text = total.ToString();
}
}
}
public void binddata()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
con.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "Select * from [footerex]";
cmd.Connection = con;
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(cmd);
System.Data.DataSet ds = new System.Data.DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType ==DataControlRowType .DataRow)
{
var incomsal = e.Row.FindControl("incomelbl") as Label;
if (incomsal != null)
{
total += int.Parse(incomsal.Text);
}
}
}
}
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class additem : System.Web.UI.Page
{
int total = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page .IsPostBack)
{
binddata();
var footlbl = GridView1.FooterRow.FindControl("footerlbl") as Label;
if (footlbl != null)
{
footlbl.Text = total.ToString();
}
}
}
public void binddata()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
con.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "Select * from [footerex]";
cmd.Connection = con;
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(cmd);
System.Data.DataSet ds = new System.Data.DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType ==DataControlRowType .DataRow)
{
var incomsal = e.Row.FindControl("incomelbl") as Label;
if (incomsal != null)
{
total += int.Parse(incomsal.Text);
}
}
}
}
Tidak ada komentar:
Posting Komentar