【问题标题】:asp.net Update Panels and postbackasp.net 更新面板和回发
【发布时间】:2012-07-03 10:39:06
【问题描述】:

我有一个 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.

如何解决?

【问题讨论】:

    标签: c# asp.net updatepanel postback


    【解决方案1】:

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

    【讨论】:

    • 这会破坏 EPPlus 调用以将内容保存到 excel 文件,因此我需要它们在外面。有没有办法用 JS 来创建它们,或者还有什么方法可以在不更新页面的情况下显示/隐藏按钮?
    • 更新了我的答案看看。
    • 几乎明白了。我得到这个是因为它是一个 asp:button Microsoft JScript 运行时错误:无法获取属性“样式”的值:对象为空或未定义如何更改上述内容?
    • 已经完成: 仍然发生
    • 将样式设置为可见:隐藏到 CSS 中的按钮。
    【解决方案2】:

    是的,就像 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);
    

    【讨论】:

    • 标签也可以这样吗?我似乎无法让那个人做同样的事情。
    • 在回发之后添加了它的文本,所以现在很好。
    猜你喜欢
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多