繁体   English   中英

asp.net更新面板和回发

[英]asp.net Update Panels and postback

我有一个DDL和Button,点击它时创建一个动态表; 所有控件都在UpdatePanel

在面板外面,我有2个按钮,应该隐藏,直到创建表格。 如果按钮从visible = false开始,然后在我从UpdatePanel单击GO按钮后将它们设置为true,它们将永远不可见

如果我添加第二个UpdatePanel并将2个按钮放在那里它有点工作,但是当我点击任一按钮时总是会出现这个错误:

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: 
The message received from the server could not be parsed.

如何解决?

移动更新面板中的两个按钮。 只有更新面板中的控件才能在Ajax调用中更新。 也就是说,如果要在Ajax调用中通过代码隐藏更改任何控件的状态,则必须将其包含在“更新”面板中。 您无法在Ajax调用中更改Update面板外的控件。

更新您需要事件处理程序。 使Button可见= true; 并设置其可见性:隐藏,然后在呼叫完成时将其更改为如下所示。

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandle);
      Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandle);
      function beginRequestHandle(sender, Args) {
      //Do something when call begins.
        }

function endRequestHandle(sender, Args) {
document.getElementById("Button1").style.visibility = "visible";
document.getElementById("Button2").style.visibility = "visible";
}
      </script>

是的,如果你需要更新面板外的按钮,Ashwin告诉你必须让JS显示按钮。 如果你的页面中有scriptmanager,那么你可以调用JS函数,这样就可以从代码隐藏中看到按钮

<script type="text/javascript" language="javascript">
   function showButtons(){
     document.getElementById("<%= Button1.ClientID %>").style.visibility = "visible";
     document.getElementById("<%= Button2.ClientID %>").style.visibility = "visible";
   }
</script>

如果按钮是服务器控件,则使用代码块<%=%>获取按钮的客户端ID。 在创建动态表后的代码隐藏中使用此方法

 ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showButtons", "showButtons();", true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM