Response.ContentType = "application/vnd.ms-excel";
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=UpdateDataLog.xls");
Response.ContentEncoding=System.Text.Encoding.UTF7; //设置输出流为简体中文
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
int nCur = this.dgRepair.CurrentPageIndex;
int nSize = this.dgRepair.PageSize;
this.dgRepair.AllowPaging = false;
this.RepairBind();
this.dgRepair.RenderControl(hw);
//以下恢复分页
this.dgRepair.AllowPaging = true;
this.dgRepair.CurrentPageIndex = nCur;
this.dgRepair.PageSize = nSize;
//重新绑定DataGrid
this.RepairBind();
Response.Write(sw.ToString());
Response.End();
--------------------------------------------------------------------------------------------------------------------------------
如果将以上代码应用于VS2005的GRIDVIEW控件中,则会报错"控件必须放在具有 runat=server 的窗体标记内"
解决办法如下:
在页面中重写Page基类的VerifyRenderingInServerForm方法
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}