簡體   English   中英

使用JavaScript和jQuery計算GridView單元格總數時出現錯誤

[英]While calculating total of gridview cell using javascript and jquery getting error

我正在使用Java腳本jquery計算GridView單元的總數。 但是,我總是在編譯時收到此錯誤。

名稱“ total”在當前上下文中不存在

內部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>  

javascriptjquery代碼:

<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>

我該如何解決這個問題?

<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`

您不能輕易訪問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;
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM