我有以下标题标签
Billed Amount:
<label >$</label>
<asp:Label ID="billed" runat="server" Text="0.00"></asp:Label>
此外,我还有一个带有文字输入的儿童中继器,如下所示
<asp:Repeater runat="server" ID="rpt" >
<HeaderTemplate>
....
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="txtB" onchange="AmountChanged(this)" Text='<%# Bind("Billed") %>' />
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
在AmountChanged JavaScript函数中,我已写入汇总所有转发器项目的帐单金额并更改标题上的值
但是当我获得标签值时,它仅作为之前的值出现。 JavaScript更改在服务器端无效。
答案 0 :(得分:1)
最简单的方法是添加 HiddenField 。每当您为billed
标签指定值时,您也会将其分配给BilledHiddenField
HiddenField。
然后,您可以在服务器端而不是BilledHiddenField.Value
阅读billed.Text
。
<asp:Label ID="billed" runat="server" Text="0.00"></asp:Label>
<asp:HiddenField id="BilledHiddenField" runat="server" />
答案 1 :(得分:0)
标签不会在回发中持续存在。解决这个问题的一个好方法是重新计算负载总量:
我们可以添加一些data-
属性,以便我们轻松识别元素
<asp:Label data-billed="" runat="server" ID="billed"></asp:Label>
<asp:TextBox runat="server" ID="txtB" data-amount="" Text='<%# Eval("Billed") %>'></asp:TextBox>
然后计算负载总数:
var amount = 0;
$("[data-amount]").each(function (index, el) {
if ($(el).val()) {
amount += parseInt($(el).val(), 10);
}
});
$("[data-billed]").text(amount);