Note that there are some explanatory texts on larger screens.

plurals
  1. POCalculation with jQuery GridViewRow Total not working after postback
    primarykey
    data
    text
    <p>For normal GridView Row Total calculation, this script works nicely but when I add a new row from GridView footer row, the total amount is not working. This means that after postback this script is not working. How can I solve this?</p> <h1>ASP.NET GridView Code</h1> <pre><code> &lt;asp:UpdatePanel ID="UpdatePanel4" runat="server"&gt; &lt;ContentTemplate&gt; &lt;asp:GridView ID="grdItems" runat="server" AutoGenerateColumns="False" CssClass="GridViewStyle" GridLines="None" ShowFooter="True" EmptyDataText="There is no data to show." Width="100%" OnRowCommand="grdItems_RowCommand" OnRowDataBound="grdItems_RowDataBound"&gt; &lt;RowStyle CssClass="RowStyle" /&gt; &lt;PagerStyle CssClass="PagerStyle" /&gt; &lt;HeaderStyle CssClass="HeaderStyle" /&gt; &lt;EditRowStyle CssClass="EditRowStyle" /&gt; &lt;AlternatingRowStyle CssClass="AltRowStyle" /&gt; &lt;FooterStyle CssClass="FooterStyle" /&gt; &lt;Columns&gt; &lt;asp:TemplateField HeaderText="ID" HeaderStyle-Width="10px"&gt; &lt;ItemTemplate&gt; &lt;asp:Label ID="lblShowID" runat="server" Text='&lt;%#Container.DataItemIndex+1 %&gt;' /&gt; &lt;/ItemTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField HeaderText="Item"&gt; &lt;ItemTemplate&gt; &lt;asp:TextBox ID="txtItem" runat="server" TextMode="MultiLine" Text='&lt;%# Bind("Item") %&gt;' Width="180px" CssClass="text-long" Rows="2" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:TextBox ID="txtFItem" runat="server" TextMode="MultiLine" Width="180px" Rows="2" /&gt; &lt;asp:RequiredFieldValidator ID="txtFItem_rfv" runat="server" ControlToValidate="txtFItem" ErrorMessage="Please enter Item Name!" ValidationGroup="Add" Display="None" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtFItem_vce" runat="server" TargetControlID="txtFItem_rfv" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField HeaderText="Qty"&gt; &lt;ItemTemplate&gt; &lt;asp:TextBox ID="txtCalcQuantity" runat="server" Text='&lt;%# Bind("Quantity") %&gt;' Width="30px" /&gt; &lt;asp:RegularExpressionValidator ID="txtCalcQuantity_rev" runat="server" ControlToValidate="txtCalcQuantity" ValidationGroup="Remove" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="[0-9]*" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcQuantity_vce" runat="server" TargetControlID="txtCalcQuantity_rev" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:TextBox ID="txtCalcQuantity" runat="server" Width="30px" /&gt; &lt;asp:RequiredFieldValidator ID="txtCalcQuantity_rfv" runat="server" ControlToValidate="txtCalcQuantity" ErrorMessage="Please enter Quantity!" ValidationGroup="Add" Display="None" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcQuantity_vce1" runat="server" TargetControlID="txtCalcQuantity_rfv" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;asp:RegularExpressionValidator ID="txtCalcQuantity_rev" runat="server" ControlToValidate="txtCalcQuantity" ValidationGroup="Add" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="[0-9]*" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcQuantity_vce2" runat="server" TargetControlID="txtCalcQuantity_rev" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField HeaderText="UOM"&gt; &lt;ItemTemplate&gt; &lt;asp:TextBox ID="txtUnit" runat="server" Text='&lt;%# Bind("Unit") %&gt;' Width="50px" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:TextBox ID="txtUnit" runat="server" Width="50px" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField HeaderText="Cur"&gt; &lt;ItemTemplate&gt; &lt;asp:Label ID="lblCurrency" runat="server" Width="25px" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:Label ID="lblCurrency" runat="server" Width="25px" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField HeaderText="Unit Price (Budget)"&gt; &lt;ItemTemplate&gt; &lt;asp:TextBox ID="txtCalcUnitPrice" runat="server" Text='&lt;%# Bind("UnitPrice", "{0:N}") %&gt;' Width="90px" /&gt; &lt;asp:RegularExpressionValidator ID="txtCalcUnitPrice_rev" runat="server" ControlToValidate="txtCalcUnitPrice" ValidationGroup="Remove" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcUnitPrice_vce" runat="server" TargetControlID="txtCalcUnitPrice_rev" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:TextBox ID="txtCalcUnitPrice" runat="server" Width="90px" /&gt; &lt;asp:RequiredFieldValidator ID="txtCalcUnitPrice_rfv" runat="server" ControlToValidate="txtCalcUnitPrice" ErrorMessage="Please enter Quantity!" ValidationGroup="Add" Display="None" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcUnitPrice_vce1" runat="server" TargetControlID="txtCalcUnitPrice_rfv" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;asp:RegularExpressionValidator ID="txtCalcUnitPrice_rev" runat="server" ControlToValidate="txtCalcUnitPrice" ValidationGroup="Add" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcUnitPrice_vce2" runat="server" TargetControlID="txtCalcUnitPrice_rev" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField HeaderText="Amount (Budget)"&gt; &lt;ItemTemplate&gt; &lt;asp:Label ID="lblAmount" runat="server" Text='&lt;%# Bind("Amount", "{0:N}") %&gt;' Width="95px" /&gt; &lt;asp:HiddenField ID="hfAmount" runat="server" Value='&lt;%# Eval("Amount").ToString()%&gt;' /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:Label ID="lblAmount" runat="server" Width="95px" /&gt; &lt;asp:HiddenField ID="hfAmount" runat="server" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField&gt; &lt;HeaderTemplate&gt; &lt;span class="red"&gt;#&lt;/span&gt;Unit Price (Actual)&lt;/HeaderTemplate&gt; &lt;ItemTemplate&gt; &lt;asp:TextBox ID="txtCalcActUnitPrice" runat="server" Text='&lt;%# Bind("ActUnitPrice", "{0:N}") %&gt;' Width="90px" /&gt; &lt;asp:RegularExpressionValidator ID="txtCalcActUnitPrice_rev" runat="server" ControlToValidate="txtCalcActUnitPrice" ValidationGroup="Purchaser" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcActUnitPrice_vce" runat="server" TargetControlID="txtCalcActUnitPrice_rev" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:TextBox ID="txtCalcActUnitPrice" runat="server" Width="90px" /&gt; &lt;asp:RegularExpressionValidator ID="txtCalcActUnitPrice_rev" runat="server" ControlToValidate="txtCalcActUnitPrice" ValidationGroup="Remove" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtCalcActUnitPrice_vce" runat="server" TargetControlID="txtCalcActUnitPrice_rev" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField&gt; &lt;HeaderTemplate&gt; &lt;span class="red"&gt;#&lt;/span&gt;Amount (Actual)&lt;/HeaderTemplate&gt; &lt;ItemTemplate&gt; &lt;asp:Label ID="lblActAmount" runat="server" Text='&lt;%# Eval("ActAmount").ToString()%&gt;' Width="95px" /&gt; &lt;asp:HiddenField ID="hfActAmount" runat="server" Value='&lt;%# Eval("ActAmount").ToString()%&gt;' /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:Label ID="lblActAmount" runat="server" Width="95px" /&gt; &lt;asp:HiddenField ID="hfActAmount" runat="server" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField&gt; &lt;HeaderTemplate&gt; &lt;span class="red"&gt;#&lt;/span&gt;Type&lt;/HeaderTemplate&gt; &lt;ItemTemplate&gt; &lt;asp:DropDownList ID="ddlType" runat="server" CssClass="text-small" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:DropDownList ID="ddlType" runat="server" CssClass="text-small" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField&gt; &lt;HeaderTemplate&gt; &lt;span class="red"&gt;#&lt;/span&gt;DO No.&lt;/HeaderTemplate&gt; &lt;ItemTemplate&gt; &lt;asp:TextBox ID="txtDO" runat="server" Width="90px" Text='&lt;%# Bind("DONo") %&gt;' /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:TextBox ID="txtFDO" runat="server" Width="90px" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField&gt; &lt;HeaderTemplate&gt; &lt;span class="red"&gt;#&lt;/span&gt;Date of DO&lt;/HeaderTemplate&gt; &lt;ItemTemplate&gt; &lt;asp:TextBox ID="txtDODate" runat="server" Width="90px" Text='&lt;%# Bind("DODate", "{0:dd-MMM-yyyy}") %&gt;' /&gt; &lt;asp:CalendarExtender ID="txtDODate_ce" runat="server" TargetControlID="txtDODate" PopupPosition="Right" Animated="true" Format="dd-MMM-yyyy" /&gt; &lt;asp:MaskedEditExtender ID="txtDODate_me" runat="server" ClearMaskOnLostFocus="False" CultureName="en-GB" Mask="99-LLL-9999" TargetControlID="txtDODate" UserDateFormat="DayMonthYear" /&gt; &lt;asp:RegularExpressionValidator ID="txtDODate_rev" runat="server" ControlToValidate="txtDODate" Display="None" ErrorMessage="Please enter valid date format dd-MMM-yyyy" ValidationGroup="None" ValidationExpression="^(0?[1-9]|[12][0-9]|3[01])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(19|20)\d\d$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtDODate_vce" runat="server" TargetControlID="txtDODate_rev" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:TextBox ID="txtDODate" runat="server" Width="90px" /&gt; &lt;asp:CalendarExtender ID="txtDODate_ce" runat="server" TargetControlID="txtDODate" PopupPosition="Right" Animated="true" Format="dd-MMM-yyyy" /&gt; &lt;asp:MaskedEditExtender ID="txtDODate_me" runat="server" ClearMaskOnLostFocus="False" CultureName="en-GB" Mask="99-LLL-9999" TargetControlID="txtDODate" UserDateFormat="DayMonthYear" /&gt; &lt;asp:RegularExpressionValidator ID="txtDODate_rev" runat="server" ControlToValidate="txtDODate" Display="None" ErrorMessage="Please enter valid date format dd-MMM-yyyy" ValidationGroup="None" ValidationExpression="^(0?[1-9]|[12][0-9]|3[01])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(19|20)\d\d$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtDODate_vce" runat="server" TargetControlID="txtDODate_rev" CssClass="customCalloutStyle" WarningIconImageUrl="~/App_Themes/Img/001_111.png" CloseImageUrl="~/App_Themes/Img/001_051.png" /&gt; &lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;asp:TemplateField ItemStyle-HorizontalAlign="Center" FooterStyle-HorizontalAlign="Center" FooterStyle-CssClass="action" ItemStyle-CssClass="action"&gt; &lt;ItemTemplate&gt; &lt;asp:LinkButton ID="btnRemove" runat="server" CommandName="Select" CssClass="delete" Text="Del" OnClientClick="return confirm('Are you sure you want to delete this?');" /&gt; &lt;/ItemTemplate&gt; &lt;FooterTemplate&gt; &lt;asp:LinkButton ID="btnAdd" runat="server" ValidationGroup="Add" CommandName="Insert" CssClass="add" Text="Add" /&gt; &lt;%--OnClientClick="return confirm('Are you sure you want to submit this?');"--%&gt;&lt;/FooterTemplate&gt; &lt;/asp:TemplateField&gt; &lt;/Columns&gt; &lt;/asp:GridView&gt; &lt;asp:SqlDataSource ID="Supplier_DS" runat="server" SelectCommand="Select '' as ID, '' as Name Union Select ID, Name From tbl_Supplier Group By ID, Name Order By Name" ConnectionString="&lt;%$ ConnectionStrings:RFP_CS %&gt;" /&gt; &lt;table style="float: right; width: 100%; text-align: right;"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style="color: Red; text-align: right; width: 200px"&gt; &lt;span class="red"&gt;#&lt;/span&gt;Discount (Actual) &lt;/td&gt; &lt;td style="width: 110px"&gt; &lt;%--&lt;asp:TextBox ID="txtDiscount" runat="server" CssClass="text-medium" Style="text-align: right; color: Red" AutoPostBack="true" OnTextChanged="txtDiscount_TextChanged" Width="105px" /&gt; &lt;asp:RegularExpressionValidator ID="txtDiscount_rev" runat="server" ControlToValidate="txtDiscount" ValidationGroup="submit" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtDiscount_vce" runat="server" TargetControlID="txtDiscount_rev" /&gt;--%&gt; &lt;/td&gt; &lt;td style="width: 310px; text-align: left;"&gt; &lt;asp:TextBox ID="txtActDiscount" runat="server" CssClass="text-medium" Style="text-align: right; color: Red" AutoPostBack="true" OnTextChanged="txtActDiscount_TextChanged" Width="105px" /&gt; &lt;asp:RegularExpressionValidator ID="txtActDiscount_rev" runat="server" ControlToValidate="txtActDiscount" ValidationGroup="submit" Display="None" ErrorMessage="Please enter valid format 99.999!" ValidationExpression="^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$" /&gt; &lt;asp:ValidatorCalloutExtender ID="txtActDiscount_vce" runat="server" TargetControlID="txtActDiscount_rev" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="width: 290px"&gt; Total &lt;/td&gt; &lt;td style="font-weight: bold; width: 110px;"&gt; &lt;asp:Label ID="lblTotal" runat="server" CssClass="text-medium" Width="110px" /&gt; &lt;/td&gt; &lt;td style="font-weight: bold; width: 310px; text-align: left;"&gt; &lt;asp:Label ID="lblActTotal" runat="server" CssClass="text-medium" Width="110px" Style="text-align: right" /&gt; &lt;asp:HiddenField ID="hfActTotal" runat="server" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/ContentTemplate&gt; &lt;/asp:UpdatePanel&gt; </code></pre> <h1>JQuery GridView Calculation</h1> <pre><code>// For GridView Calculation $("[id*=grdItems]input[type=text][id*=txtCalc]").live("keyup", function(e) { var quantity = $(e.target).closest('tr').find("input[type=text][id*=txtCalcQuantity]").val(); var price = $(this).closest('tr').find("input[type=text][id*=txtCalcUnitPrice]").val().replace(/,/g, ''); var actprice = $(this).closest('tr').find("input[type=text][id*=txtCalcActUnitPrice]").val().replace(/,/g, ''); var total = parseFloat(price) * parseInt(quantity); var acttotal = parseFloat(actprice) * parseInt(quantity); if (isNaN(total)) total = 0; $(e.target).closest('tr').find("[id*=lblAmount]").text(total.toFixed(2)); $(e.target).closest('tr').find("[id*=hfAmount]").val(total); if (isNaN(acttotal)) acttotal = 0; $(e.target).closest('tr').find("[id*=lblActAmount]").text(acttotal.toFixed(2)); $(e.target).closest('tr').find("[id*=hfActAmount]").val(acttotal); GrossTotal(); GrossActTotal(); }); var gross; function GrossTotal() { gross = 0; $("[id*=grdItems][id*=hfAmount]").each(function(index, val) { var value = parseFloat($(val).val().replace(/,/g, '')); if (isNaN(value)) value = 0; gross = gross + value; }); $("[id*=lblTotal]").text(gross.toFixed(2)); } var actgross; function GrossActTotal() { actgross = 0; $("[id*=grdItems][id*=lblActAmount]").each(function(index, actitem) { var value = parseFloat($(actitem).text().replace(/,/g, '')); if (isNaN(value)) value = 0; actgross = actgross + value; }); var discount = parseFloat($("[id*=txtActDiscount]").text()); if (isNaN(discount)) discount = 0; actgross = actgross - discount; $("[id*=lblActTotal]").text(actgross.toFixed(2)); $("[id*=hfActTotal]").val(actgross); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload