Amount after calculation display at another rows in datatable asp.net using datagird view

I added checkkbox in my datatable using datagrid view and when I debug it the checkbox is appear but the problem is my price set display the amount after calculation in total amount rows. It supposed to show in price set.

javascript for calculation

        function CalculateTotals() {  
            var gv = document.getElementById("<%= GridView1.ClientID %>");  
            var tb = gv.getElementsByTagName("input");  
            var lb = gv.getElementsByTagName("span");  
            var sub = 0;  
            var total = 0;  
            var indexQ = 1;  
            var indexP = 0;  
            var price = 0;  
            for (var i = 0; i < tb.length; i++) {  
                if (tb[i].type == "text") {  
                    ValidateNumber(tb[i]);  
                    price = lb[indexP].innerHTML.replace
                    ("$", "").replace(",", "");  
                    sub = parseFloat(price) * parseFloat(tb[i].value);  
                    if (isNaN(sub)) {  
                        lb[i + indexQ].innerHTML = "0.00";  
                        sub = 0;  
                    }  
                    else {  
                        lb[i + indexQ].innerHTML = 
                            FormatToMoney(sub, "$", ",", "."); // if add "$", ",", "." answer will be in $0.00
                    }        
                    indexQ++;  
                    indexP = indexP + 2;  
                    total += parseFloat(sub);  
                }  
            }  
  
            lb[lb.length - 1].innerHTML = 
                FormatToMoney(total, "$", ",", ".");   // if add "$", ",", "." answer will be in $0.00
        }  
  
        function ValidateNumber(o) {  
            if (o.value.length > 0) {  
                o.value = o.value.replace(/[^d]+/g, ''); //allow only whole numbers  
            }  
        } 
 
        function isThousands(position) {  
            if (Math.floor(position / 3) * 3 == position) return true;  
            return false;  
        };  
  
        function FormatToMoney(theNumber, theCurrency, theThousands, theDecimal) {  
            var theDecimalDigits = theNumber.toFixed(2).split('.')[1];
            theNumber = "" + Math.floor(theNumber);  
            var theOutput = theCurrency;  
            for (x = 0; x < theNumber.length; x++) {  
                theOutput += theNumber.substring(x, x + 1);  
                if (isThousands(theNumber.length - x - 1) && (theNumber.length - x - 1 != 0)) {  
                    theOutput += theThousands;  
                };  
            };  
            theOutput += theDecimal + theDecimalDigits;  
            return theOutput;  
         }

javascript for checkbox

  function Validate(sender, args) {
             var gridView = document.getElementById("<%=GridView1.ClientID %>");
             var checkBoxes = gridView.getElementsByTagName("input");
             for (var i = 0; i < checkBoxes.length; i++) {
                 if (checkBoxes[i].type == "checkbox" && checkBoxes[i].checked) {
                     args.IsValid = true;
                     return;
                 }
             }
             args.IsValid = false;
         }

code for table product description

<asp:GridView ID="GridView1" runat="server" ShowFooter="true" AutoGenerateColumns="false">
                <Columns>
                    <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server" Text='<%# Eval("No") %>' />
            </ItemTemplate>
        </asp:TemplateField>
                    <asp:BoundField DataField="Item" HeaderText="Item" />
                    <asp:BoundField DataField="Number" HeaderText="Part Number" />
                    <asp:BoundField DataField="Name" HeaderText="Part Name" />
                    <asp:TemplateField HeaderText="Quantity">
                        <ItemTemplate>
                            <asp:TextBox ID="TXTQty" runat="server" onkeyup="CalculateTotals();"></asp:TextBox>
                        </ItemTemplate>
                        <FooterTemplate>
                            <asp:Label ID="LBLQtyTotal" runat="server" Font-Bold="true" ForeColor="Blue" Text="" ></asp:Label>
                             <b>Total Amount:</b>
                        </FooterTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Price">
                        <ItemTemplate>
                            <asp:Label ID="LBLPrice" runat="server" Text='<%# Eval("Price","{0:C}") %>'></asp:Label>
                        </ItemTemplate>
                        <FooterTemplate>
                            <b>Total Qty:</b>
                        </FooterTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Price Set">
                        <ItemTemplate>
                            <asp:Label ID="LBLSubTotal" runat="server" ForeColor="White" Text="0.00"></asp:Label>
                        </ItemTemplate>
                        <FooterTemplate>
                            <asp:Label ID="LBLTotal" runat="server" ForeColor="white" Font-Bold="true" Text="0.00"></asp:Label>
                        </FooterTemplate> 
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

code behind

 private void BindQuotationDataToGrid()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[5] {new DataColumn("No"), new DataColumn("Item"), new DataColumn("Number"), new DataColumn("Name"), new DataColumn("Price") });
            dt.Rows.Add("", 1, "485-3AB", "Light Ring", "16.52");
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                BindQuotationDataToGrid();
        }

enter image description here