使用Javascript访问GridView页脚中的Label控件

时间:2016-07-08 14:06:26

标签: javascript c# jquery asp.net gridview

如何将%20值分配给$mult中存在的标签lblGrandTotal

我使用下面的java脚本代码将FooterTemplate值分配给网格视图外部的标签。

的JavaScript

$mult

网格视图

<script>
    $(document).ready(function () {
        $(".txtMult input").on('keyup mouseup', multInputs);

        function multInputs() {

            var $mult = 0;
            // calculate Grand total
            $("tr.txtMult").each(function () {
                // get the values from this row:
                var $UnitPrice = $('.UnitPrice', this).val();
                var $Quantity = $('.Quantity', this).val();
                var $Discountvalue = $('.Discount', this).val() / 100;
                var $total = (($UnitPrice) * ($Quantity));
                $mult += $total;

            });

            // for each row:
            $("tr.txtMult").each(function () {
                // get the values from this row:
                var $UnitPrice = $('.UnitPrice', this).val();
                var $Quantity = $('.Quantity', this).val();
                var $Discountvalue = $('.Discount', this).val() / 100;
                var $total = (($UnitPrice) * ($Quantity));
                $('.multTotal', this).text(Math.round($total * 100) / 100);
            });
            $("#<%=Total.ClientID %>").text(Math.round($mult * 100) / 100);
        }
    });
</script>

代码

<asp:GridView ID="gridpur" CssClass="table  text-nowrap" ShowFooter="true" runat="server" OnRowDataBound="gridpur_RowDataBound" AutoGenerateColumns="False" DataKeyNames="ItemID" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:TemplateField HeaderText="Quantity">
            <ItemTemplate>
                <asp:TextBox ID="txtCalcQuantity" CssClass="Quantity form-control" runat="server"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Unit Price">
            <ItemTemplate>
                <asp:TextBox ID="txtCalcUnitprice" Width="120" CssClass="UnitPrice form-control" runat="server"></asp:TextBox>
            </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="Amount">
            <ItemTemplate>
                <asp:Label ID="lblTotal" runat="server" CssClass="multTotal" Text="0"></asp:Label>
            </ItemTemplate>
            <FooterTemplate>
                <asp:Label ID="lblGrandTotal" Text="" runat="server" />
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

1 个答案:

答案 0 :(得分:1)

如果页面上只有一个ID为lblGrandTotal的控件,则可以将其ID模式设置为静态,这将确保这正是最终标记中显示的客户端ID。这将允许您直接在js代码中使用此ID:

<asp:Label ID="lblGrandTotal" Text="" runat="server" ClientIDMode="Static" />

现在你不再需要任何字谜,只需文字ID:

$("lblGrandTotal").text(Math.round($mult * 100) / 100);

同样,只有在此页面上有一个具有此ID的控件时才可以这样做。

替代解决方案是分配您可以查询的内容。例如,CssClass是一种有点标准的方法。

<asp:Label ID="lblGrandTotal" Text="" runat="server" CssClass="grandTotalLabel" />

不需要在样式表中定义此类。再次,确保它不会在其他任何地方使用。现在只需查询它:

$(".grandTotalLabel").text(Math.round($mult * 100) / 100);