本人刚开始接触.net,基础薄弱,望各位前辈多多指教!
目前,我要输出gridview的内容生成excel表格。expor按钮在content.aspx页面,content.aspx页面嵌套content.ascx,gridview就在content.ascx里面。
参考了网上的代码,却始终不能成功,无法弹出让用户选择存储位置的对话框。
前端代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Button ID="btnExcel" ClientIDMode="Static" runat="server" Text="Export Excel" onclick="btnExport_Click" style="font-size:14pt;text-align:center;font-weight:bolder;margin-top:2px;"/> <uc2:ContentAssignmentControl ID="ucContentAssignmentControl" runat="server" /> <br /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnExcel" EventName="Click" /> </Triggers> </asp:UpdatePanel>
后台代码
public override void VerifyRenderingInServerForm(System.Web.UI.Control control) { // } public void btnExport_Click(object sender, EventArgs e) { Response.ClearContent(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls"); Response.ContentType = "application/vnd.ms-excel"; Response.ContentEncoding = System.Text.Encoding.UTF8; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); GridView gv = (GridView)ucContentAssignmentControl.FindControl("gvContentAssign1"); if (gv.Rows.Count > 0) { gv.Columns[1].HeaderText = "勿駁"; gv.Columns[10].Visible = false; gv.Columns[11].Visible = false; } gv.RenderControl(htw); Response.Write(sw.ToString()); Response.End(); }
在page我也设置了
EnableEventValidation = "false"
虽然编译能通过,但是点击按钮却无任何反应,也不抱错。不过在浏览器中F12查看,却看到错误信息:Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.
那位大神前辈能教教我应该怎么处理阿?倒腾了两天了,还是没有解决
asp:UpdatePanel 是采用的Ajax提交吗。不能直接用Ajax下载文件。不用asp:UpdatePanel试试看。