2011-06-09 36 views
0

我有三列一個GridView,這將是這樣的:如何使用JavaScript計算GridView列的總和?

ID     Sign    Amount 
------    --------    --------- 
1     +     1000 
2     -     500 
3     -     750 

所以列「金額」的總和應爲「-250」。考慮金額也列「簽名」。 這裏是我的GridView的源代碼:

<Columns> 
    <asp:BoundField DataField="ID" HeaderText="ID"/> 
     <asp:TemplateField HeaderText="Sign" > 
     <ItemTemplate> 
<asp:TextBox ID="txtgvSign" runat="server" Text='<%# Bind("Sign") %>'></asp:TextBox> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Amount"> 
    <ItemTemplate> 
<asp:TextBox ID="txtAmount" runat="server" Text='<%# Bind("Amount") %>'></asp:TextBox> 
</ItemTemplate> 
</asp:TemplateField> 
</Columns> 

到目前爲止,我已經寫了一個JavaScript的,但只計算量之和。我不知道如何根據符號值計算總和。以下是我寫的JavaScript:

function CalculateTax(fixedtotal) 
    { 
    var taxgrid = document.getElementById('<%=gvAttribute.ClientID %>'); 
    var taxip = taxgrid.getElementsByTagName('input'); 
    var taxamount = 0*1; 

    for(i = 0; i < taxip.length; i++) 
    { 
     var tax = taxip[i].value;    
     taxamount = parseFloat(taxamount) + parseFloat(tax); 
    } 
    return parseFloat(fixedtotal) + parseFloat(taxamount); 
    } 

所以請修改此Javascript。

回答

2

你可以試試下面的代碼嗎?

function CalculateTax(fixedtotal) 
    { 
    var taxgrid = document.getElementById('<%=gvAttribute.ClientID %>'); 
    var taxip = taxgrid.getElementsByTagName('input'); 
    var taxamount = 0*1; 

    for(i = 0; i < taxip.length; i+= 2) 
    { 
     var sign = taxip[i].value;    
     var tax = taxip[i+1].value; 
     taxamount = parseFloat(taxamount) + (sign =='+' ? 1 : -1)* parseFloat(tax); 
    } 
    return parseFloat(fixedtotal) + parseFloat(taxamount); 
    } 
+0

謝謝AKHIL。這是工作.... – thevan 2011-06-09 06:54:47

0
<script language="javascript" type="text/javascript"> 
    function Calculate() { 

     var grid = document.getElementById("<%=grid.ClientID%>"); 
     var sum = 0; 
     for (var i = 1; i < grid.rows.length; i++) { 
      var Cell = grid.rows[i].getElementsByTagName("input"); 
      if (!Cell[4].value) {sum += 0; } else { sum += parseFloat(Cell[0].value);} 
     } 

     alert(sum);   
    } 

</script> 



<asp:TemplateField HeaderText="Current payment" > 
<ItemTemplate> 
    <asp:TextBox ID="txtvalue" runat="server" Width="70px" BorderStyle="None" onkeyup="Calculate();" ></asp:TextBox> 
</ItemTemplate> 
<ItemStyle Width="120px" /> 
</asp:TemplateField>`enter code here`