我使用ASP.NET UpdatePanel进行部分回传。不知何故,在服务器端回传(ddl_SelectedIndexChanged)后,Javascript函数设置的值(lblTotal的值为100)被移除。 有什么办法可以保留Javascript函数设置的值吗?
JavaScript:
<script type="text/javascript">
function calculateTotal() {
var lblTotal = document.getElementById("<%= lblTotal.ClientID%>");
lblTotal.innerHTML = "100";
}
</script>
HTML:
<asp:UpdatePanel ID="UpdateGrid" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddl" runat="server" OnTextChanged="ddl_SelectedIndexChanged" AutoPostBack="true" />
<asp:CheckBox ID="chkLevels" runat="server" onclick="calculateTotal()" />
<asp:Label ID="lblTotal" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
C#代码背后。
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
// Some code
}
这里的问题是,当你使用 calculateTotal
在Javascript中,由于你没有将数据回传到服务器,所以服务器不知道这些变化。
所以,你需要用以下方法触发postback事件 __doPostBack()
:
客户端
function calculateTotal() {
var lblTotal = document.getElementById("<%= lblTotal.ClientID%>");
//Calculation
var totalValue = "100";
__doPostBack('chkLevels', totalValue);
}
Page_Load
在服务器端:
protected void Page_Load(object sender, EventArgs e)
{
if (Request["__EVENTTARGET"] == "chkLevels")
{
var totalValue = Request["__EVENTARGUMENT"];
lblTotal.Text = totalValue;
}
}