![](/img/trans.png)
[英]Accessing a Label control within a GridViewRow with Javascript
[英]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.