2011-05-22 45 views
1

我正在計算使用Java腳本jqueryGridView單元格的總數。但是,編譯時我總是遇到這個錯誤。雖然使用javascript和jQuery獲取錯誤計算GridView單元格的總數

'總' 不在 當前上下文

存在內部GridView代碼名稱:

<asp:TemplateField HeaderText="Header 1"> 
    <ItemTemplate> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    </ItemTemplate>    
    <FooterTemplate> 
     <asp:Label ID="lblTotal" runat="server" Text="Total" Font-Bold="true"> 
     </asp:Label> 
    </FooterTemplate>    
</asp:TemplateField> 
<asp:TemplateField HeaderText="Header 2" > 
    <ItemTemplate> 
     <asp:TextBox ID="TextBox2" runat="server" class="calculate" 
      onchange="calculate()"></asp:TextBox> 
    </ItemTemplate>    
    <FooterTemplate> 
     <asp:TextBox ID="total" runat="server"></asp:TextBox> 
    </FooterTemplate> 

的JavaScript的jQuery代碼:

<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" 
    type="text/javascript"> 
    <script language="javascript" type="text/javascript"> 
    function calculate() 
    { 
     var txtTotal = 0.00; 
     //var passed = false; 
     //var id = 0; 

     $(".calculate").each(function (index, value) { 
      var val = value.value; 
      val = val.replace(",", "."); 
      txtTotal = MathRound(parseFloat(txtTotal) + parseFloat(val)); 
     }); 
     document.getElementById("<%=total.ClientID %>").value = txtTotal.toFixed(2); 
    } 

    function MathRound(number) { 
     return Math.round(number * 100)/100; 
    } 

</script> 

我該如何解決這個問題的任何幫助。

+0

報告的錯誤在編譯時?那麼這不是一個JavaScript或jQuery的問題。這些技術通常是在運行時解釋/編譯的。 (我假設你沒有使用類似Closure的東西。) – Trott 2011-05-22 23:14:07

回答

0

您無法輕鬆訪問模板化控件(如GridView)內的控件。創建一些變量來保存total.ClientID,以便jQuery可以抓住它。

在你的aspx:

var totalClientID = TotalClientID; 

在代碼隱藏:

void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.Footer) 
    { 
     TotalClientID = ((TextBox)e.Row.FindControl("total")).ClientID; 
    } 
} 
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` 
相關問題