This way
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" ShowFooter="true">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Col1") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("Col2") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Text='<%# Eval("Col3") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="Aquamarine" />
</asp:GridView>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$("[id*=GridView1] input[type=text]").live("blur", function () {
Calculate(this);
});
$("[id*=GridView1] input[type=text]").live("keyup", function () {
Calculate(this);
});
function Calculate(t) {
if (!jQuery.trim($(t).val()) == '') {
if (!isNaN(parseFloat($(t).val()))) {
var row = $("tr:last-child", $(t).closest("table"));
var idx = $(t).closest("td").index();
}
} else {
$(t).val('0');
}
var grandTotal = 0;
$("[id*=GridView1] tr").each(function () {
if ($(this).index() != $("[id*=GridView1] tr:first-child").index() && $(this).index() != $("[id*=GridView1] tr:last-child").index()) {
grandTotal = grandTotal + parseFloat($("input", $("td", this).eq(idx)).val());
}
});
$("td", "[id*=GridView1] tr:last-child").eq(idx).html(grandTotal);
}
</script>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Col1"), new DataColumn("Col2"), new DataColumn("Col3") });
dt.Rows.Add(221, 12, 78);
dt.Rows.Add(156, 198, 88);
dt.Rows.Add(44, 12, 109);
GridView1.DataSource = dt;
GridView1.DataBind();
int sum1, sum2, sum3;
sum1 = 0;
sum2 = 0;
sum3 = 0;
foreach(GridViewRow row in GridView1.Rows)
{
if(row.RowType == DataControlRowType.DataRow)
{
sum1 += int.Parse((row.FindControl("TextBox1") as TextBox).Text);
sum2 += int.Parse((row.FindControl("TextBox1") as TextBox).Text);
sum3 += int.Parse((row.FindControl("TextBox1") as TextBox).Text);
}
}
GridView1.FooterRow.Cells[0].Text = sum1.ToString();
GridView1.FooterRow.Cells[1].Text = sum2.ToString();
GridView1.FooterRow.Cells[2].Text = sum3.ToString();
}
}