updatepanel中使用alert弹出框方法(两种)

在使用UpdatePanel的时候,如果要用到 Response . Write ()方法,则会出错,错误信息内容大概如下: 
Sys.WebForms.PageRequestManagerParserErrorException:  The  message received from  the  server  could   not   be   parsed Common   causes   for   this   error   are   when   the   response   is   modified  by  calls   to   Response . Write (),  response  filters, HttpModules, or server trace  is  enabled. Details:  Error   parsing   near  ' 你要输出的内容|UpdatePanel|U' 

解决方法如下: 

1.如果调用 Response . Write ()方法的服务器控件在使用UpdatePanel的页面,则只需要在UpdatePanel下增加一个<Triggers>节点,通过PostBackTrigger注册一下改控件就可以了。代码如下: 

   1. <asp:ScriptManager ID="ScriptManager1" runat="server"> 
   2.         </asp:ScriptManager> 
   3.         <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
   4.             <Triggers> 
   5.                     <asp:PostBackTrigger ControlID="Button2" />    <!--Button2就是下面那个需要在Button2_Click事件里使用 Response . Write ()的按钮ID--> 
   6.             </Triggers> 
   7.             <ContentTemplate>            
   8.                 <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" /> 
   9.                 <asp:UpdateProgress ID="UpdateProgress1" runat="server"> 
10.                 <ProgressTemplate></ProgressTemplate> 
11.                 </asp:UpdateProgress> 
12.             </ContentTemplate> 
13.         </asp:UpdatePanel> 

2.但是,如果是在母版页中使用UpdatePanel,则不能通过以上方法来解决,否则或出现类似以下错误: 

A control with ID 'btnExport'  could   not   be  found  for   the  trigger in UpdatePanel 'UpdatePanel1'. 

这主要是UpdatePanel1找不到<asp:PostBackTrigger ControlID="btnExport" />中注册的控件,因为,我们一般没有在母版页中添加这个控件(btnExport)。(当然,如果在UpdatePanel的<ContentTemplate> 节点下添加了ID为btnExport的控件,则不会出错。) 

如果出现这样的错误该怎么办呢,我的解决方法是在需要用到 Response . Write ()方法的控件所在页码的Page_Load事件中添加如下代码: 
((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport);
//ScriptManager1是<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager>的ID 
这样,问题就解决了。 

下面是我的一个项目中的代码: 
母版页前台代码: 

   1. <asp:ScriptManager runat="server" ID="ScriptManager1"> 
   2. </asp:ScriptManager> 
   3. <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
   4.           <ContentTemplate> 
   5.                             <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">                               
   6.                             </asp:ContentPlaceHolder> 
   7.                             <asp:UpdateProgress ID="UpdateProgress1" runat="server"> 
   8.                                 <ProgressTemplate> 
   9.                                     <table class="progressBox" style="width: 200px"> 
10.                                         <tr> 
11.                                             <td> 
12.                                                 <asp:Image runat="server" ID="imgLoad" ImageUrl="~/App_Themes/SkinFile/Images/animated_loading.gif" /> 
13.                                             </td> 
14.                                             <td> 
15.                                                 正在从服务器下载数据... 
16.                                             </td> 
17.                                         </tr> 
18.                                     </table> 
19.                          </ProgressTemplate> 
20.                    </asp:UpdateProgress> 
21.          </ContentTemplate> 
22. <asp:UpdatePanel> 
23. 

子页面后台代码: 

   1. protected void Page_Load(object sender, EventArgs e) 
   2.     { 
   3.         ((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport); 
   4.     } 

这样,当按钮btnExport的单击事件中用到: Response . Write ()方法时,就不会出现题目中的错误了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值