我在更新面板中有一个GridView,它包含股票代码信息,并根据用户搜索股票代码绑定到DataSource。
当用户搜索股票代码时,结果返回正常,还有2个文本框和一个标签字段添加到gridview中的每一行,该行将获取订单数量和行折扣的用户输入,最后分别显示行总数
我现在正在尝试使用onkeyup事件和JQuery来为这些文本框计算行总数,但没有任何作用。我已经做了一些检查,看到网格视图没有在网页的源代码中以HTML表格格式填充,这让我相信JQuery无法找到控件ID,这意味着它不会能够在触发onkeyup事件时进行计算。有什么我需要寻找的:
ASP:
<asp:UpdatePanel ID="upAddOrderItems" runat="server">
<ContentTemplate>
<div class="row">
<div class="col-md-12">
<asp:GridView ID="grvStockCodes"
runat="server"
AutoGenerateColumns="False"
CssClass="table table-striped"
AlternatingRowStyle-BackColor="#E4EAEE">
<HeaderStyle HorizontalAlign="Center" />
<AlternatingRowStyle BackColor="#E4EAEE" />
<Columns>
<asp:TemplateField HeaderText="StockCode">
<HeaderStyle CssClass="col-md-1 col-sm-1" />
<ItemStyle CssClass="col-md-1 col-sm-1" />
<ItemTemplate>
<div style="float: left">
<asp:Label ID="lblStockCode"
Text='<%# DataBinder.Eval(Container.DataItem, "StockCode") %>'
runat="server">
</asp:Label>
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description">
<HeaderStyle CssClass="col-md-5 col-sm-5" />
<ItemStyle CssClass="col-md-5 col-sm-5" />
<ItemTemplate>
<div style="float: left">
<asp:Label ID="lblDescription"
Text='<%# DataBinder.Eval(Container.DataItem, "Description") %>'
runat="server">
</asp:Label>
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Price(excl)">
<HeaderStyle CssClass="col-md-1 col-sm-1" />
<ItemStyle CssClass="col-md-1 col-sm-1" />
<ItemTemplate>
<div style="float: left">
<asp:Label ID="lblPrice"
Text='<%# DataBinder.Eval(Container.DataItem, "SellingPrice") %>'
ItemStyle-CssClass="price"
runat="server">
</asp:Label>
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="OrderQty">
<HeaderStyle CssClass="col-md-1 col-sm-1" />
<ItemStyle CssClass="col-md-1 col-sm-1" />
<ItemTemplate>
<div style="float: left">
<asp:TextBox ID="txtOrderQty" onKeyUp="CalculateTotals();"
runat="server">
</asp:TextBox>
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Discount">
<HeaderStyle CssClass="col-md-1 col-sm-1" />
<ItemStyle CssClass="col-md-1 col-sm-1" />
<ItemTemplate>
<div style="float: left">
<asp:TextBox ID="txtDiscount"
runat="server">
</asp:TextBox>
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="LineTotal(excl))">
<HeaderStyle CssClass="col-md-1 col-sm-1" />
<ItemStyle CssClass="col-md-1 col-sm-1" />
<ItemTemplate>
<div style="float: left">
<asp:Label ID="lblLineTotal"
runat="server"
Text ="0.00">
</asp:Label>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
<div class="divider gap-top-20 gap-bottom-45"></div>
<asp:Button ID="btnConfirmOrderDetails" runat="server" Text="Confirm Order Details" CssClass="btn btn-primary pull-right" OnClick="btnConfirmOrderDetails_Click" />
</ContentTemplate>
</asp:UpdatePanel>
JQuery的
<script type="text/javascript">
$(function CalculateTotals() {
$("[id*=txtOrderQty]").val("0");
});
$("[id*=txtOrderQty]").live("change", function () {
if (isNaN(parseInt($(this).val()))) {
$(this).val('0');
} else {
$(this).val(parseInt($(this).val()).toString());
}
});
$("[id*=txtOrderQty]").live("keyup", function () {
if (!jQuery.trim($(this).val()) == '') {
if (!isNaN(parseFloat($(this).val()))) {
var row = $(this).closest("tr");
$("[id*=lblLineTotal]", row).html(parseFloat($(".price", row).html()) * parseFloat($(this).val()));
}
} else {
$(this).val('');
}
});
</script>
&#13;