【问题标题】:UpdatePanel postback removes changes made using javascriptUpdatePanel 回发删除使用 javascript 所做的更改
【发布时间】:2020-07-29 20:32:03
【问题描述】:

我正在使用 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】:

    问题在于,当您在 Javascript 中使用 calculateTotal 更改数据时,服务器不知道更改,因为您没有将数据回传到服务器。

    所以你需要用__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;
        }
    
    }
    

    见:how to use __doPostBack function in asp.net

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多