UpdatePanel postback删除使用javascript进行的更改。

问题描述 投票:0回答:1

我使用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
}
javascript asp.net updatepanel autopostback
1个回答
1
投票

这里的问题是,当你使用 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;
    }

}

参见。如何在asp.net中使用__doPostBack函数。

© www.soinside.com 2019 - 2024. All rights reserved.