aspgreener的专栏

人生的自由 本人做的小站【小事一箩筐】欢迎访问 http://www.xiaoshiyiluokuang.com

用户操作
[即时聊天] [发私信] [加为好友]
水若寒ID:aspgreener
48646次访问,排名2376,好友100人,关注者105人。
电脑,购物,旅游,美食,网游,文学,影视,游泳,娱乐,IT技术,IT,music,电影,音乐,读书,流行音乐
aspgreener的文章
原创 81 篇
翻译 1 篇
转载 155 篇
评论 58 篇
aspgreener的公告
小事一箩筐,让你笑翻了^_^
箩筐.Net采集器


希望大家一起学习进步,有什么问题请与我联系。Msn:nnu_zyj@hotmail.com QQ:49940396

统计:

最近评论
zhengguangyi130:顶..太有意思了...哈哈
l8x88b:倒晕
不好意思啊!
一发就是两个出来
l8x88b:倒晕
不好意思啊!
一发就是两个出来
l8x88b:Print2Flash控件
这个控件您用过吗?哪有,我找了下没找到
谢谢!
l8x88b:Print2Flash控件
这个控件您用过吗?哪有,我找了下没找到
谢谢!
文章分类
收藏
相册
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 asp.net 导出excel时报类型“DataGridLinkButton”的控件“dgExcel__ctl1__ctl0”必须放在具有 runat=server 的窗体标记内 解决方法收藏

新一篇: C#发送Email邮件方法总结(.net2.0) | 旧一篇: 关于页面缓存清除的方法小结(整理)


一般我们导出excel的方法函数如下:

public static void DataGridToExcel(DataGrid grdTemp,DataSet dsTemp,string strFileName)
        
{
            grdTemp.AllowPaging
=false;   //设置不能分页

            grdTemp.DataSource
=dsTemp;  //重新绑定数据源
            grdTemp.DataBind();
   
            
//常规导出方法

            System.IO.StringWriter SW 
= new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter HTW
=new System.Web.UI.HtmlTextWriter(SW);
            grdTemp.RenderControl(HTW);

            
//Page为要导出的对象,当前是Page,如果是DataGrid,DataList等都可以
            System.Web.HttpContext.Current.Response.Buffer=true;
            System.Web.HttpContext.Current.Response.Clear();
            System.Web.HttpContext.Current.Response.ClearContent();
            System.Web.HttpContext.Current.Response.ClearHeaders();
            System.Web.HttpContext.Current.Response.ContentType 
= "application/vnd.ms-excel";
            
//Response.ContentType是输出流的 HTTP MIME 类型
            
//Response.ContentType     --- word文件
            
//application/vnd.ms-excel --- excel文件
            
//...
            System.Web.HttpContext.Current.Response.Charset="UTF-8";
            System.Web.HttpContext.Current.Response.ContentEncoding
=System.Text.Encoding.Default;
            System.Web.HttpContext.Current.Response.AddHeader(
"Content-Disposition""attachment;filename=" + strFileName + ".xls");
            
//attachment --- 作为附件下载
            
//inline --- 在线打开
            
//filename如过是中文,则可以用HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)
            
//进行进行编码,以解决文件名乱码的问题
            System.Web.HttpContext.Current.Response.Write(SW.ToString());
            System.Web.HttpContext.Current.Response.Flush();
            System.Web.HttpContext.Current.Response.Close();
        }
 不过当我们导出excel时报如下的错误信息:

类型“DataGridLinkButton”的控件“dgExcel__ctl1__ctl0”必须放在具有 runat=server 的窗体标记内。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 类型“DataGridLinkButton”的控件“dgExcel__ctl1__ctl0”必须放在具有 runat=server 的窗体标记内。

源错误: