In this post lets discuss a very common problem. I have answered many such posts. Finally I decided to write a blog post on it. This is regarding calculating the total of the columns, total of the rows and grand total in a table. For this case lets take textbox in each cell and on keyup we are going to do the calculation. And the code goes here-
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $(".data").keyup(function () { var temp, total = 0, index; $(this).closest("tr").find(".data").each(function (i, item) { temp = parseFloat($(item).val()); if (!isNaN(temp)) total = total + temp; }); $(this).closest("tr").find(".rowTotal").val(total); total = 0; index = $(this).closest("tr").find("td").index($(this).closest("td")); $("#tbl tr").each(function (i, item) { if ($(item).find("td:eq(" + index + ") .data").hasClass("data")) { temp = parseFloat($(item).find("td:eq(" + index + ") .data").val()); if (!isNaN(temp)) total = total + temp; } }); $("#tbl tr:last td:eq(" + index + ") .columnTotal").val(total); calculateGrandTotal(); }) }); function calculateGrandTotal() { (function () { var temp, total = 0; $(".columnTotal").each(function () { temp = parseFloat($(this).val()); if (!isNaN(temp)) total = total + temp; }); $(".grandTotal").val(total); })(); } </script> </head> <body> <form id="form1" runat="server"> <table id="tbl"> <tr> <td><asp:TextBox ID="TextBox1" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox2" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox3" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox4" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox5" CssClass="rowTotal" ReadOnly="true" runat="server"></asp:TextBox></td> </tr> <tr> <td><asp:TextBox ID="TextBox6" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox7" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox8" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox9" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox10" CssClass="rowTotal" ReadOnly="true" runat="server"></asp:TextBox></td> </tr> <tr> <td><asp:TextBox ID="TextBox11" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox12" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox13" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox14" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox15" CssClass="rowTotal" ReadOnly="true" runat="server"></asp:TextBox></td> </tr> <tr> <td><asp:TextBox ID="TextBox16" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox17" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox18" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox19" CssClass="data" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox20" CssClass="rowTotal" ReadOnly="true" runat="server"></asp:TextBox></td> </tr> <tr> <td><asp:TextBox ID="TextBox21" CssClass="columnTotal" ReadOnly="true" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox22" CssClass="columnTotal" ReadOnly="true" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox23" CssClass="columnTotal" ReadOnly="true" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox24" CssClass="columnTotal" ReadOnly="true" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox25" CssClass="grandTotal" ReadOnly="true" runat="server"></asp:TextBox></td> </tr> </table> </form> </body> </html>
hi
ReplyDeletei have tried this code by somehow couldnot attempt to use for gridview. Please help, if possible provide doing same using gridview instead table.
regards
It's not working
ReplyDeleteThis is an working example. You may need to check your HTML structure and jQuery selector.
ReplyDeletenot working
ReplyDeleteCheck your jquery selector. This is a working example.
ReplyDeleteIt's not working. I've copied the code exactly as written - all I get is a blank screen.
ReplyDeleteCould it be the runat="server" that we're all having a problem with to make it work?
This is a working example. Make sure you are running on visual studio or remove asp.net textbox with simple HTML input .
Delete