C# asp.net更新面板和回发

C# asp.net更新面板和回发,c#,asp.net,updatepanel,postback,C#,Asp.net,Updatepanel,Postback,我有一个DDL和按钮,单击它可以创建一个动态表;所有控件都在UpdatePanel中 在面板外,我有两个按钮,在创建表之前应该隐藏这些按钮。 如果按钮开始时为visible=false,然后在单击UpdatePanel中的GO按钮后将其设置为true,则它们将永远不可见 如果我添加第二个UpdatePanel并将两个按钮放在其中,它会起到一定的作用,但当单击任一按钮时,我总是会出现此错误: Microsoft JScript runtime error: Sys.WebForms.PageReq

我有一个DDL和按钮,单击它可以创建一个动态表;所有控件都在
UpdatePanel

在面板外,我有两个按钮,在创建表之前应该隐藏这些按钮。 如果按钮开始时为
visible=false
,然后在单击
UpdatePanel
中的GO按钮后将其设置为true,则它们将永远不可见

如果我添加第二个UpdatePanel并将两个按钮放在其中,它会起到一定的作用,但当单击任一按钮时,我总是会出现此错误:

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

如何修复此问题?

移动更新面板内的两个按钮。在Ajax调用中,只有更新面板中的控件才能得到更新。也就是说,如果您想在Ajax调用中通过codebehind更改任何控件的状态,您必须将其包含在更新面板中。您不能在Ajax调用中更改更新面板外部的控件

更新 为此,您需要事件处理程序。使按钮可见=真;并将其可见性设置为:隐藏,然后在通话结束后按如下所示进行更改

<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>

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandle);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandle);
函数beginRequestHandle(发送方,参数){
//当电话开始时做点什么。
}
函数endRequestHandle(发送方,参数){
document.getElementById(“Button1”).style.visibility=“可见”;
document.getElementById(“Button2”).style.visibility=“可见”;
}

是的,就像Ashwin告诉你的那样,如果你需要更新面板外的按钮,你必须让按钮在JS中可见。如果您的页面中有scriptmanager,那么您可以调用JS函数,使按钮从codebehind可见,如下所示

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

这打破了将内容保存到excel文件的EPPlus调用,因此我需要它们在外部。有没有一种方法可以用JS创建它们,或者有什么其他方法可以在不更新页面的情况下显示/隐藏按钮?更新了我的答案,看一看。差不多明白了。我之所以会这样,是因为它是asp:button Microsoft JScript运行时错误:无法获取属性“style”的值:对象为null或未定义如何更改上述内容?已完成:仍然发生设置样式可见:隐藏到CSS中的按钮。标签是否也可以这样做?我似乎无法让那一个做同样的事情。它在回发后添加了文本,所以现在很好。
 ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showButtons", "showButtons();", true);