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% 设置宽度 

  • 相关阅读:
    Vue.js(2.x)之计算属性
    Vue.js(2.x)之插值
    Chrome 打不开任意网页以及设置、扩展程序等页面解决方法
    IDEA 查看某个class的maven引用依赖&如何展示Diagram Elements
    mysql事务隔离分析
    IDEA call Hierarchy 双击跳转源码后绿色选中背景不消失问题
    记一次RocketMQ源码导入IDEA过程
    springboot+mybatis多数据源
    http调用之RestTemplate
    BlockingQueue的几个实现分析
  • 原文地址:https://www.cnblogs.com/gossip/p/1978072.html
Copyright © 2011-2022 走看看