zoukankan      html  css  js  c++  java
  • 原样导出Repeater控件数据(包括分页数据)

    一、背景说明

    之前导出excel一般使用DataTable作为数据库,但是DataTableRepeater绑定后,会做一些格式转换(如:dt里面为1的值 Repeater中显示 “正常”),如果在DataTable中再进行转换就比较麻烦。(好处就是可以导出分页数据)

    二、解决方法

    1、解决的问题
           a) Repeater数据原样导出

           b) 可导出Repeater中的分页数据

    2、代码

                DataTable dt = ViewState["DtDatat"as DataTable;

                this.Repeater1.DataSource = dt;

                this.Repeater1.DataBind();

                //使用流方式导出Excel

                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

                HttpContext.Current.Response.ContentType = "application/ms-excel";

                HttpContext.Current.Response.Charset = "gb2312";

                HttpContext.Current.Response.AppendHeader("Content-Disposition""attachment;filename=" + HttpUtility.UrlEncode("门店奖品兑换.xls"System.Text.Encoding.UTF8).ToString());

                StringWriter sw = new StringWriter();

                HtmlTextWriter htw = new HtmlTextWriter(sw);

                Repeater1.RenderControl(htw);

                HttpContext.Current.Response.Write(sw.ToString());

                HttpContext.Current.Response.End();

     三 、代码说明

    1、如果要导出分页数据,那么就需要把Repeater绑定的DataTable数据存放在ViewState中,触发导出事件时使用DataTable重新绑定Repeater
    DataTable dt = ViewState["DtDatat"as DataTable;

                this.Repeater1.DataSource = dt;

                this.Repeater1.DataBind();

    2、使用流方式导出

     四、会出现问题的解决方法

         1、导出的Excel都是Html代码

            所有的html代码应该放在Repeater内,包括<table>

         2、导出的所有数据缩到一列

            在标题列中不要通过style=10% 设置宽度 

  • 相关阅读:
    Extjs renderer函数
    孩子,教育,钱
    《新概念英语》的学习方法
    英语,想说爱你爱的太晚
    window.open模拟表单POST提交
    Extjs 解决grid分页bug问题
    Extjs 判断对象是非为null或者为空字符串
    linux shell 删除满足正则表达式的文件
    OpenCV 生成矩形mask
    测试Kaggle kernel commit 是否会删除以前的output
  • 原文地址:https://www.cnblogs.com/gossip/p/1978072.html
Copyright © 2011-2022 走看看