使用jquery在gridview中计算行总计和总计

时间:2015-11-10 18:17:58

标签: javascript jquery asp.net gridview

嗨,在下面的JavaScript代码中,乘法在txtQuantity之间,即网格视图中的文本框TemplateField和网格视图中的BoundField价格。

我的问题是我的网格视图将txtQuantity和txtPrice都设为TemplateFieldes

<ItemTemplate><asp:TextBox ID="txtprice" runat="server" Text='<%# Bind("Price") %>'></asp:TextBox></ItemTemplate>

<ItemTemplate><asp:TextBox ID="txtQuantity" runat="server"></asp:TextBox></ItemTemplate>

我试图修改java脚本代码

 $("[id*=lblTotal]", row).html(parseFloat($("[id*=txtprice]", row).html()) * parseFloat($(this).val()));

但是它给了我NaN作为乘法的结果

原始js代码

<script type="text/javascript">
    $(function () {
        $("[id*=txtQuantity]").val("0");
    });
    $("[id*=txtQuantity]").live("change", function () {
        if (isNaN(parseInt($(this).val()))) {
            $(this).val('0');
        } else {
            $(this).val(parseInt($(this).val()).toString());
        }
    });
    $("[id*=txtQuantity]").live("keyup", function () {
        if (!jQuery.trim($(this).val()) == '') {
            if (!isNaN(parseFloat($(this).val()))) {
                var row = $(this).closest("tr");
                $("[id*=lblTotal]", row).html(parseFloat($(".price", row).html()) * parseFloat($(this).val()));
            }
        } else {
            $(this).val('');
        }
        var grandTotal = 0;
        $("[id*=lblTotal]").each(function () {
            grandTotal = grandTotal + parseFloat($(this).html());
        });
        $("[id*=lblGrandTotal]").html(grandTotal.toString());
    });
</script>

1 个答案:

答案 0 :(得分:1)

您的代码存在一些小问题,请尝试以下方法:

&#13;
&#13;
Math.pow
&#13;
$(function () {
   $("[id*=txtQuantity").val("0");
});
$(document).on("change", "[id*=txtQuantity]", function () {
  if (isNaN(parseInt($(this).val()))) {
    $(this).val('0');
  } else {
    $(this).val(parseInt($(this).val()).toString());
  }
});
$(document).on("keyup mouseup", "[id*=txtQuantity]", function () {
  if (!jQuery.trim($(this).val()) == '') {
    if (!isNaN(parseFloat($(this).val()))) {
      var row = $(this).closest("tr");
      $("[id*=lblTotal]", row).html(parseFloat($("[id*=txtPrice]", row).val()) * parseFloat($(this).val()));
    }
  } else {
    $(this).val('');
  }
  var grandTotal = 0;
  $("[id*=lblTotal]").each(function () {
    var value = $(this).html();
    if(value != "")
      grandTotal = grandTotal + parseFloat(value);
  });
  $("[id*=lblGrandTotal]").html(grandTotal.toString());
});
&#13;
&#13;
&#13;