当前位置:编程学习 > C#/ASP.NET >>

Repeater导出EXCEL

System.IO.StringWriter sw = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
            this.Repeater1.RenderControl(hw);

            Response.Clear();
            Response.ContentType = "application/vnd.ms-excel";
            Response.Charset = "";
            Page.EnableViewState = false;

            Response.AppendHeader("Content-Disposition", "attachment;filename=Teacher.xls");
            Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=GB2312\"><title>   Copyright by SDU</title></head><body><center>");
            Response.Write(sw.ToString());
            Response.Write("</center></body></html>");
            Response.End();


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/uself/archive/2008/08/26/2835057.aspx




我运行这个   结果类型“LinkButton”的控件“ctl00_ContentPlaceHolder_MainRepeater_ctl01_Delete”必须放在具有 runat=server 的窗体标记内。

这个要怎么修改啊 --------------------编程问答-------------------- LZ 你头像吓我一跳  郁闷了........  速度 溜走............ --------------------编程问答--------------------   Response.AppendHeader("Content-Disposition", "attachment;filename=Teacher.xls");
  Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=GB2312\"><title> Copyright by SDU</title></head><body><form id='form1' runat='server'><center>");
  Response.Write(sw.ToString());
  Response.Write("</form></center></body></html>");

这样就可以了 --------------------编程问答-------------------- 把this.Repeater1.RenderControl(hw) 这一句放到Response.Write(sw.ToString())上面 --------------------编程问答--------------------
引用 1 楼 hualilihua 的回复:
LZ 你头像吓我一跳 郁闷了........ 速度 溜走............



这不是我的头像...
--------------------编程问答-------------------- 还是会出现这个问题


类型“LinkButton”的控件“ctl00_ContentPlaceHolder_MainRepeater_ctl01_Delete”必须放在具有 runat=server 的窗体标记内。 --------------------编程问答-------------------- 楼主,我也用这个方法导出Excel,也同样遇到这样的问题,请问你解决了吗?
引用 5 楼  的回复:
还是会出现这个问题


类型“LinkButton”的控件“ctl00_ContentPlaceHolder_MainRepeater_ctl01_Delete”必须放在具有 runat=server 的窗体标记内。
--------------------编程问答-------------------- 在页面中重写Page基类的VerifyRenderingInServerForm方法
加上
  public override void VerifyRenderingInServerForm(Control control)
  {
   
  } --------------------编程问答-------------------- 后台加上  
  //重写此事件,防止导出数据时报错。
    public override void VerifyRenderingInServerForm(Control control)
    {
        //base.VerifyRenderingInServerForm(control);
    }

前台改一下
<%@ Page Language="C#"……  EnableEventValidation="false"%>


检查一下linkbutton是不是没放在<form id="form1" runat="server"></form>里 --------------------编程问答-------------------- 我回复了两条信息,提示都成功,啥没有呢? --------------------编程问答--------------------
引用 8 楼  的回复:
后台加上  
  //重写此事件,防止导出数据时报错。
    public override void VerifyRenderingInServerForm(Control control)
    {
        //base.VerifyRenderingInServerForm(control);
    }

前台改一下
<%@ Page Language="C#……

本来我是第一个回复这个的。。结果现在成了顶了。 --------------------编程问答-------------------- 重写?能说仔细点吗?小弟不才,刚刚接触.net,现在导出就碰到这个问题
引用 8 楼  的回复:
后台加上  
  //重写此事件,防止导出数据时报错。
    public override void VerifyRenderingInServerForm(Control control)
    {
        //base.VerifyRenderingInServerForm(control);
    }

前台改一下
<%@ Page Language="C#……
--------------------编程问答-------------------- 是不是你的form没有 runat=“server” --------------------编程问答-------------------- 可以了,非常感谢,好人一生平安,美中不足的是,把后面的,编辑、删除按钮也导出来了,怎么把最后一列去掉呢?
引用 10 楼  的回复:
引用 8 楼  的回复:

后台加上
//重写此事件,防止导出数据时报错。
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}

前台改一下
<%@ Page Language="C#……

本来……
--------------------编程问答--------------------
检查一下linkbutton是不是没放在<form id="form1" runat="server"></form>里 --------------------编程问答--------------------
引用楼主  的回复:
System.IO.StringWriter sw = new System.IO.StringWriter();
  System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
  this.Repeater1.RenderControl(hw);

  Response.Clear();
  Resp……


服务器控件 必须放在 具有runat="server"的标签内
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,