这是一个把Web控件导出为Excel和Word的方法,方法体如下:
/// <summary>
/// 将Web控件导出
/// </summary>
/// <param name="source">控件实例</param>
/// <param name="type">类型:Excel或Word</param>
public void ExpertControl(System.Web.UI.Control source, DocumentType type)
{
//设置Http的头信息,编码格式
if (type == DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition", "attachment;filename=Report" + E_ID + ".xls");
Response.ContentType = "application/ms-excel";
}
else if (type == DocumentType.Word)
{
//Word
Response.AppendHeader("Content-Disposition", "attachment;filename=Report" + E_ID + ".doc");
Response.ContentType = "application/ms-word";
}
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //关闭控件的视图状态
source.Page.EnableViewState = false; //初始化HtmlWriter
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
source.RenderControl(htmlWriter); //输出
Response.Write(writer.ToString());
Response.End();
}但是在一个"Table控件"中再使用一个“GirdVIew”控件后,将Table控件导出时就会抛出异常,异常信息如下:
“source.RenderControl(htmlWriter);”:类型“GridView”的控件“eduresume”必须放在具有 runat=server 的窗体标记内。直接导出Talbe控件时,是很好使得,但在里面使用GirdView后就会抛异常,不明白,GridVIew本来不就是Table吗???在Table控件里面加个Panel,然后再Panel里再放入GirdView也还是出现异常。。请问这是什么原因,应该怎样解决
/// <summary>
/// 将Web控件导出
/// </summary>
/// <param name="source">控件实例</param>
/// <param name="type">类型:Excel或Word</param>
public void ExpertControl(System.Web.UI.Control source, DocumentType type)
{
//设置Http的头信息,编码格式
if (type == DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition", "attachment;filename=Report" + E_ID + ".xls");
Response.ContentType = "application/ms-excel";
}
else if (type == DocumentType.Word)
{
//Word
Response.AppendHeader("Content-Disposition", "attachment;filename=Report" + E_ID + ".doc");
Response.ContentType = "application/ms-word";
}
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //关闭控件的视图状态
source.Page.EnableViewState = false; //初始化HtmlWriter
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
source.RenderControl(htmlWriter); //输出
Response.Write(writer.ToString());
Response.End();
}但是在一个"Table控件"中再使用一个“GirdVIew”控件后,将Table控件导出时就会抛出异常,异常信息如下:
“source.RenderControl(htmlWriter);”:类型“GridView”的控件“eduresume”必须放在具有 runat=server 的窗体标记内。直接导出Talbe控件时,是很好使得,但在里面使用GirdView后就会抛异常,不明白,GridVIew本来不就是Table吗???在Table控件里面加个Panel,然后再Panel里再放入GirdView也还是出现异常。。请问这是什么原因,应该怎样解决
解决方案 »
- win客户端应用程序 怎样通过 asp.net web 应用程序的身份验证??急!急!
- 请问关于会员登入后修改个人信息 使用session寻找我的database这样对吗?
- 送分了,求一个正则!标题要长········急···································
- 我刚开始学习,想问个问题,希望有人能帮我解决,谢谢
- 在JavaScript中如何取得DataTable中的数据?
- 未将对象应用到实例中
- 求开发asp.net网站网页上的activex的组件资料
- 能否给个Web Service调用小例子?
- 一段小VB函数,如何改成c#和代码分离的?
- 这些书怎么样
- 存储过程怎么删除刚刚插入的一行
- 朋友没帮我看看这个IF else循环有没有简单的方法
子夜,你好窗体标记啥玩意???LZ放在Panel里面不就有Runat=Server了吗???如果是Table控件中再放有一个Table控件,然后把第一个Table控件导出也会出现像楼主这样的情况吗???
那就是说不能在Table控件内部使用GridView控件了???
{
//base.VerifyRenderingInServerForm(control);
}后台加上面代码试试
..
</form>
<body>
<form id="form1" runat="server">
这里<GridView>
</form>
</body>