updatepanel中的模板页中的控件 进行全局刷新的解决方法(respone.write()出错的解决方法,updatepanel中导出excel的解决方 案) (转自freeliver54博客)
2010-08-03 17:01
537 查看
在使用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注册一下改控件就可以了。代码如下: <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="Button2" /> <!--Button2就是下面那个需要在Button2_Click 事件里使用Response.Write()的按钮ID-->
</Triggers>
<ContentTemplate>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate></ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</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
这样,问题就解决了。
下面是我的一个项目中的代码:
母版页前台代码: <asp:ScriptManager runat="server" ID="ScriptManager1">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<table class="progressBox" style="width: 200px">
<tr>
<td>
<asp:Image runat="server" ID="imgLoad" ImageUrl="~/App_Themes/SkinFile/Images/animated_loading.gif" />
</td>
<td>
正在从服务器下载数据...
</td>
</tr>
</table>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
<asp:UpdatePanel> 子页面后台代码: protected void Page_Load(object sender, EventArgs e)
{
((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport);
} 这样,当按钮btnExport的单击事件中用到: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注册一下改控件就可以了。代码如下: <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="Button2" /> <!--Button2就是下面那个需要在Button2_Click 事件里使用Response.Write()的按钮ID-->
</Triggers>
<ContentTemplate>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate></ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</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
这样,问题就解决了。
下面是我的一个项目中的代码:
母版页前台代码: <asp:ScriptManager runat="server" ID="ScriptManager1">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<table class="progressBox" style="width: 200px">
<tr>
<td>
<asp:Image runat="server" ID="imgLoad" ImageUrl="~/App_Themes/SkinFile/Images/animated_loading.gif" />
</td>
<td>
正在从服务器下载数据...
</td>
</tr>
</table>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
<asp:UpdatePanel> 子页面后台代码: protected void Page_Load(object sender, EventArgs e)
{
((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport);
} 这样,当按钮btnExport的单击事件中用到:Response.Write()方法时,就不会出现题目中的错误了。
相关文章推荐
- updatepanel中的模板页中的控件 进行全局刷新的解决方法(respone.write()出错的解决方法,updatepanel中导出excel的解决方 案) (转自freeliver54博客)
- updatepanel 刷新 gridview太慢的解决方法,当包含dropdownlist控件时
- GridView导出Excel使用UpdatePanel导致“无法分析从服务器收到的消息”解决方法.
- 使用UpdatePanel 局部刷新出现中文乱码的解决方法!!
- Dynamics CRM2013 Form利用window.location.reload()进行全局刷新带来的问题及解决的方法
- Asp.net-UpdatePanel异步刷新后JS失效的解决方法
- Updatepanel 中导出excel的解决办法
- asp.net 导出excel时报类型“DataGridLinkButton”的控件“dgExcel__ctl1__ctl0”必须放在具有 runat=server 的窗体标记内 解决方法
- 在SharePoint 2013 中使用UpdatePanel控件进行局部刷新
- Updatepanel用了为什么还刷新页面解决方法
- Gridview Row事件响应方法无法获取其它UpdatePanel中控件数据的解决办法
- ASP.NET:UpdatePanel与Response.Write()不兼容解决方法
- 导出EXCEL UpdatePanel出错
- Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法
- Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法
- UpdatePane刷新和Ajax控件Timer的问题,刷新没有效果,解决方法
- Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法
- vs.net控件updatePanel实现无刷新的方法
- vs.net控件updatePanel实现无刷新的方法
- 多个UpdatePanel控件相互引发刷新的使用(转)