1

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

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

如果我添加第二个 UpdatePanel 并将 2 个按钮放在那里它有点工作但我总是在单击任一按钮时收到此错误:

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

如何解决?

4

2 回答 2

3

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

更新 您需要事件处理程序。使按钮可见=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>
于 2012-07-03T10:44:51.073 回答
0

是的,就像 Ashwin 告诉你的,如果你需要更新面板之外的按钮,你必须让按钮从 JS 中可见。如果您的页面中有脚本管理器,那么您可以调用 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);
于 2012-07-03T11:56:12.240 回答