asp.net更新面板和回发

时间:2012-07-03 10:39:07

标签: c# asp.net updatepanel 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.

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

在“更新面板”中移动两个按钮。只有更新面板中的控件才能在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>

答案 1 :(得分:0)

是的,如果你需要更新面板外的按钮,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>

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

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