簡體   English   中英

使用Javascript訪問GridView頁腳中的Label控件

[英]Accessing a Label control within a GridView Footer with Javascript

如何為FooterTemplate中存在的標簽lblGrandTotal分配$mult值。

我已經使用下面的Java腳本代碼為網格視圖之外的標簽分配$mult值。

的JavaScript

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

后面的代碼

protected void gridpur_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.CssClass = "txtMult";
    }
}

如果在頁面上只有一個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);

暫無
暫無

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

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